python中包與模塊以及包的發(fā)布操作!

1.什么是包?

為了更加友好的對python代碼進(jìn)行組織管理,python中出現(xiàn)了包和模塊的概念,類似生活中整理我們的物品一樣,將代碼按照不同的功能進(jìn)行整理整合,可以很大程度提升代碼可讀性和代碼質(zhì)量,方便在項(xiàng)目中進(jìn)行協(xié)同開發(fā)!

(1.)包(pakcage)(文件夾):包含對個(gè)python文件/模塊的文件夾,并且文件夾中有一個(gè)名稱為init.py的特殊聲明文件,那么這個(gè)文件夾就是一個(gè)包(模塊包),可以將大量功能相關(guān)的python模塊包含起來同意管理,同樣也可以被其他模塊通過import關(guān)鍵字引入重復(fù)使用封裝的模塊和代碼!
(2.)包和文件夾的區(qū)分
pyhton中的包,就是一個(gè)包含了init.py文件的特殊文件夾 其可以有效的管理和組織python中的模塊
普通文件夾 其實(shí)也是一種最簡單的(人工約定)包!沒有通過init.py聲明的包那么強(qiáng)大!!

2.什么是模塊

模塊(module):pyhton中每個(gè)python文件就是一個(gè)模塊(模塊名稱就是文件名稱),每個(gè)python文件中,封裝類似功能的變量、函數(shù)、類型等等,可以被其他的python模塊通過import關(guān)鍵字引入重復(fù)使用!

如果說模塊是具備一定功能的工具
那么包就是一個(gè)包含很多工具、功能強(qiáng)大的工具箱

3.導(dǎo)入操作

import 和 from .. import
包和模塊的引入,通常有兩個(gè)關(guān)鍵語法
import 包/模塊
from 包/模塊 import 具體對象
(1.)基本語法
import 模塊
使用模塊中的數(shù)據(jù)
模塊.變量
模塊.函數(shù)
模塊.類型
import方式可以引入包、模塊;
import引入的包和模塊會(huì)自動(dòng)從當(dāng)前文件夾中、系統(tǒng)環(huán)境變量PYTHONPATH中、以及系統(tǒng)的sys.path路徑中查詢是否存在該名稱的包/模塊
如果不存在,就會(huì)出現(xiàn)錯(cuò)誤:no module named ‘xxxxxx’
(2.)from xx import 方式
基本語法:
from . import xxx 從當(dāng)前模塊路徑下,引入xxx模塊
from .. import xxx 從當(dāng)前模塊的父級路徑下,引入xxx模塊
from pkg import module 從pkg包中引入一個(gè)模塊module
from pkg.module import vars, func , clazz 從指定的模塊中直接引用
REMARK:from xx import 語法方式,主要是針對出現(xiàn)了包結(jié)構(gòu)的python代碼而特定的代碼引入方式,首先要非常明確代碼的組織結(jié)構(gòu)才能正確使用from import語法進(jìn)行代碼的引入和復(fù)用
REMARK2:通過上述代碼,可以看到form import語法區(qū)分為兩種操作
使用了./..的相對路徑的引入操作方式
直接使用包/模塊名稱的絕對引入操作方式
(3.)from import 的相對引入
首先,相對引入本身是相對當(dāng)前正在操作的文件的路徑
同一級路徑使用符號: .
上一級路徑使用符號:..
但是需要注意的是,一旦使用相對路徑,就要明確所謂相對路徑,是依賴他們所屬文件夾確定的,就類似生活中的兄弟姐妹的稱謂一樣,是相對他們的父親來說的,

所以在包和模塊的相對引入時(shí),一定要切記,引入的路徑相對于當(dāng)前文件;執(zhí)行的路徑相對于引入的最外層文件夾,這樣才能正確的使用相對引入操作執(zhí)行我們的模塊代碼!

(4.)from import 的絕對引入
絕對引入的操作方式比較直接,從最外層的包的源頭直接開始操作;這種操作方式在第三方模塊的操作中是司空見慣的,但是在獨(dú)立的項(xiàng)目開發(fā)中使用較少!

4.包的發(fā)布

(1.)本地發(fā)布
在我們已經(jīng)開發(fā)好的一個(gè)包文件夾下,創(chuàng)建一個(gè)python模塊:setup.py

模塊中定義如下內(nèi)容
# 引入構(gòu)建包信息的模塊
from distutils.core import setup
# 定義發(fā)布的包文件的信息
setup(
name=“damu_pkg01”,  # 發(fā)布的包文件名稱
version=”1.0”,   # 發(fā)布的包的版本序號
description=”我的測試包”, # 發(fā)布包的描述信息
author=”大牧莫邪”,   # 發(fā)布包的作者信息
author_email=”damu@163.com”, # 作者聯(lián)系郵箱信息
py_modules=[‘__init__.py’,’..’,..]# 發(fā)布的包中的模塊文件列表
)~~~
#####執(zhí)行當(dāng)前程序包文件的構(gòu)建操作命令:按照標(biāo)準(zhǔn)格式組織寶中的所有數(shù)據(jù)文件
python  setup.py  build
構(gòu)建完畢的文件:可以通過python  setup.py install 命令直接當(dāng)還曾第三方模塊進(jìn)行安裝
#####執(zhí)行命令進(jìn)行包的打包發(fā)布
python setup.py sdist
打包的文件,主要是方便進(jìn)行網(wǎng)絡(luò)傳輸,打包之后會(huì)在dist中創(chuàng)建包含中所有信息的 tar.gz 壓縮包文件;該文件就可以git等方式提交給對應(yīng)的開源組織發(fā)布你的自定義模塊了!
(2.)網(wǎng)絡(luò)發(fā)布
首先,進(jìn)入http://pypi.python.org/pypi網(wǎng)站上,注冊一個(gè)自己的賬號吧! 這個(gè)網(wǎng)站是目前大部分python第三方模塊集中的一個(gè)管理社區(qū)平臺
其次,你已經(jīng)準(zhǔn)備好了你自己的pyhton程序包,并在包中準(zhǔn)備好了setup.py文件       在setup.py中,已經(jīng)定義好了程序包的所有描述信息
執(zhí)行打包命令:
pyhton setup.py  sdist
接下來  安裝第三方模塊:twine, 用于上傳我們打包的項(xiàng)目文件
pip  install twine
上傳項(xiàng)目
twine  upload dist/*
此時(shí),如果我們還需要我們自己開發(fā)的某個(gè)模塊的話,直接通過pip命令安裝即可
pip  install  包名稱/模塊名稱!





















?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容