將我們寫的Python程序發布成包后,可以使其能夠安裝使用。
在項目上測試的時候,某些情況下,可以將Python打包,然后上傳到測試服務器,安裝測試。
setuptools是常用的打包工具。
一個簡單的setup.py文件如下:
from setuptools import setup, find_packages setup( name = "my_demo", version = "0.1", packages = find_packages() )
其中,name是包的名字,version是版本。
給packages指定find_packages(),意為包括在本目錄下的所有Python包。
什么是Python包呢?在Python 3.2及更早版本中,只有包含__init__.py文件才能識別為Python包。
那要是不想包含某些包呢?給find_packages指定exclude參數即可。
那如果我們想將數據文件也添加進來呢?有以下方法(以下:package_data:數據文件,即一些txt或者dat文件 ):
方法一:
在使用版本控制的情況下(先包含全部數據文件,再指定去除):
packages = find_packages('src'), # 包含所有src目錄下的package
package_dir = {'':'src'},
include_package_data = True, # 包含所有版本控制的內容
# 排除所有 README.txt
exclude_package_data = { '': ['README.txt'] }
方法二(直接指定包含哪些數據文件):
packages = find_packages('src'), # 包含所有src中的包 package_dir = {'':'src'}, # 告訴distutils包都在src下 package_data = { # 如果包中含有.txt文件,則包含它 '': ['*.txt'], # 包含demo包data文件夾中的 *.dat文件 'demo': ['data/*.dat'] }
其他的一些常用參數:
zip_safe,指定boolean選項,控制項目能否直接通過壓縮文件安全安裝。
install_requires:安裝依賴
entry_points: 創建控制台腳本 詳情
等等
可以使用命令:
python setup.py bdist_egg
來創建egg文件,egg文件可以跨平台,便於使用pip安裝。
也可以使用命令:
python setup.py sdist
來創建源發布版本,此后可通過pip install來安裝生成的tar.gz包
其他一些setup.py文件的參數選項:
python setup.py build #編譯
python setup.py install #安裝
python setup.py sdist #制作分發包
python setup.py bdist_wininst #制作windows下的分發包
python setup.py bdist_rpm
參考:
https://setuptools.readthedocs.io/en/latest/setuptools.html