這篇文章主要講解了“python程序的打包分發怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python程序的打包分發怎么實現”吧!
python編程時,一部分人習慣將實現同一個功能的代碼放在同一個文件;
使用這些代碼只需要import就可以了;
下面看一個例子。
testModel.py
class Test: name = 'tom' age = 0 __weight = 0 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("Test model: ",self.name,self.age, self.__weight)
接著,引用上面的代碼:
import testModel testModel.Test("tom", 0, 1).speak() # Test model: tom 0 1
新建一個文件夾testPackages;
testPackages下新建一個空文件__init__.py,聲明這是一個python包
testPackages下新建一個空文件testModel.py,用于存放函數代碼
testPackages/ ├── __init__.py └── testModel.py
接著,引用上面的代碼:
from testPackages import testModel testModel.Test("tom", 0, 1).speak() # Test model: tom 0 1
__init__.py的作用就是申明這是一個包;
每次導入包之前都會先執行__init__.py,因此可以在其中申明一些定義,比如變量或接口;
下面我們看一個__init__.py的使用例子
testPackages/ ├── __init__.py ├── add.py └── testModel.py
add.py
def add(a, b): return a + b
__init__.py
import testPackages.add add = testPackages.add.add
接著,引用上面的代碼:
import testPackages testPackages.add(1,2) # 3
使用setuptools構建python包
packaging_tutorial/ ├── LICENSE ├── pyproject.toml #使用什么工具(pip或build)構建項目 ├── README.md ├── src/ │ └── example_package/ │ ├── __init__.py │ └── example.py └── tests/ #例子數據
pyproject.toml
[build-system] requires = ["setuptools>=42"] build-backend = "setuptools.build_meta"
setup.py是setuptool的構建腳本,用于設置包的基本信息:名字,版本和源碼地址
import setuptools with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read() setuptools.setup( name="testPackages", version="2.2.1", author="Author", author_email="author@example.com", description="A small example package", long_description=long_description, long_description_content_type="text/markdown", url="http://baidu.com/", classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], package_dir={"": "src"}, packages=setuptools.find_packages(where="src"), python_requires=">=3.6", )
setup()參數:
package_dir:字典,key是包名,value是一個文件夾;
packages:分發包需要導入的所有模塊列表;可以手動輸入,也可以使用find_packages函數自動尋找package_dir下的所有包或模塊。
python3 setup.py sdist
python3 -m pip install ./dist/testPackages-2.2.1.tar.gz
from testPackages import add add.add(1,2) # 3 #在__init__.py構建了add = testPackages.add.add,所以可以直接使用 add(1,2) # 3
感謝各位的閱讀,以上就是“python程序的打包分發怎么實現”的內容了,經過本文的學習后,相信大家對python程序的打包分發怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。