Python打包工具setuptools的使用
将我们写的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