模塊和包的定義
模塊:python中每個(gè)文件都是一個(gè)獨(dú)立的模塊
獨(dú)立的,較少的榆芦,功能近似的 多個(gè)函數(shù) 變量 類型的集合
模塊中的測(cè)試代碼可以包含在 if __name__ == “__main__”:
語句塊中症昏,這樣不會(huì)再其他模塊引入時(shí)執(zhí)行這些測(cè)試代碼
一個(gè)標(biāo)準(zhǔn)模塊的定義方式【模塊名稱:見名知意】
包:包含多個(gè)python模塊文件夾,包含一個(gè)__init__.py聲明文件
包含多個(gè)模塊 具備強(qiáng)大功能的程序
區(qū)別
包 包含一個(gè)__init__.py聲明文件[空文件 代碼]
文件夾:普通文件夾
區(qū)別: 包可以有效管理模塊 文件夾只能作為默認(rèn)包進(jìn)行基本管理【包含文件】
包和文件夾中引入對(duì)應(yīng)的模塊代碼的操作方式有區(qū)別
import 和 from import
包和模塊的引入
import
引入一個(gè)模塊
import 模塊名稱
#使用模塊中的數(shù)據(jù)
模塊名稱.變量名稱
模塊名稱.函數(shù)名稱
模塊名稱.類型名稱
引入一個(gè)包
import 包名稱
# 使用包中的數(shù)據(jù)
包名稱.模塊名稱.變量名稱/函數(shù)名稱/類型名稱
# 引入包中的某個(gè)模塊
import 包名稱.模塊名稱
# 使用包中的數(shù)據(jù)
包名稱.模塊名稱.變量名稱/函數(shù)名稱/類型名稱
import引入的包和模塊會(huì)自動(dòng)從當(dāng)前文件夾中抛寝、
系統(tǒng)環(huán)境變量PYTHONPATH中度硝、
以及系統(tǒng)的sys.path路徑中查詢是否存在該名稱的包/模塊
from import語法
# (相對(duì))引入包
from . import 包名稱 [必須在__init__.py中实蔽,主動(dòng)通過from . import引入需要的模塊]
# 使用數(shù)據(jù)
包名稱.模塊名稱.變量名稱/函數(shù)名稱/類型名稱
# (相對(duì))引入包中的模塊
from .包名稱 import 模塊名稱
# 使用數(shù)據(jù)
模塊名稱.變量名稱/函數(shù)名稱/類型名稱
# (相對(duì)) 引入包中的模塊中的數(shù)據(jù)
from .包名稱.模塊名稱 import 變量/函數(shù)/類型
# 使用數(shù)據(jù):當(dāng)成當(dāng)前文件中的數(shù)據(jù)進(jìn)行數(shù)據(jù)
變量名稱/函數(shù)名稱/類型名稱
#相對(duì)引入 & 絕對(duì)引入
相對(duì)引入:相對(duì)當(dāng)前文件路徑,參照父級(jí)文件路徑
|-- demo/
|-- utils.py
|-- main.py [from . import utils]
運(yùn)行:添加參照路徑:python -m demo.main
運(yùn)行過程中荡澎,在main.py中找到相對(duì)路徑的utils.py
絕對(duì)引入:針對(duì)包/項(xiàng)目/模塊均践,直接引入的方式
|-- demo/
|-- users/
|-- __init__.py
|-- tools.py
|-- utils.py
|- main.py
[import utils]
[from users import tools]
[絕對(duì)引入:查詢路徑]
[當(dāng)前文件夾|PYTHONPATH|sys.path]
__all__屬性就是用于模糊導(dǎo)入的特殊魔法屬性,值是一個(gè)包含模塊名稱的列表摩幔,
主要聲明在__init__.py文件中彤委,用于定義可以使用通配符的方式引入的模塊
自定義包的發(fā)布
在我們已經(jīng)開發(fā)好的一個(gè)包文件夾下,創(chuàng)建一個(gè)python模塊:setup.py
模塊中定義如下內(nèi)容:
# 引入構(gòu)建包信息的模塊
from distutils.core import setup
# 定義發(fā)布的包文件的信息
setup(
name=“damu”, # 發(fā)布的包文件名稱
version=”1.0”, # 發(fā)布的包的版本序號(hào)
description=”我的測(cè)試包”, # 發(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
REMARK:構(gòu)建完畢的文件
可以通過python setup.py install命令直接當(dāng)成第三方模塊進(jìn)行安裝
執(zhí)行命令進(jìn)行包的打包發(fā)布
python setup.py sdist
執(zhí)行打包命令
python setup.py sdist
首先安裝第三方模塊:twine或衡,用于上傳我們打包的項(xiàng)目文件
pip install twine
上傳項(xiàng)目
twine upload dist/*
此時(shí)焦影,如果我們還需要我們自己開發(fā)的某個(gè)模塊的話,
直接通過pip命令安裝即可
pip install 文件名