setuptools
Python打包分发工具setuptools:曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系。setuptools 则是它的增强版,能帮助我们更好的创建和分发 Python 包,尤其是具有复杂依赖关系的包。其通过添加一个基本的依赖系统以及许多相关功能,弥补了该缺陷。他还提供了自动包查询程序,用来自动获取包之间的依赖关系,并完成这些包的安装,大大降低了安装各种包的难度,使之更加方便,将程序打包以后可以可以安装到自己的虚拟环境中,也可以上传到PyPI,这样非常方便大项目开发
setuptools使用
pip 安装:
$ pip install setuptools
复制代码
第一个安装文件 在目录 learn_setup 下新建安装文件 setup.py,然后创建包 myapp 模拟要打包源码包:
├── myapp
│ └── __init__.py
└── setup.py
复制代码
setup.py 文件内容如下:
from setuptools import setup
setup(
name='firstApp001', # 应用名
version='0.0.1', # 版本号
packages=['myapp'], # 包括在安装包内的 Python 包
)
复制代码
使用安装文件创建 wheel 有了上面的 setup.py 文件,我们就可以打出各种安装包,主要分为两类:sdist 和 bdist。 Source distribution 使用 sdist 可以打包成 source distribution,支持的压缩格式有:
使用方式为:
$ python setup.py sdist --formats=gztar,zip
复制代码
目录下便会多出 dist 和 *.egg-info 目录,dist 内保存了我们打好的包,上面命令使用 --formats 指定了打出 .tar.gz 和 .zip 包,如果不指定则如上表根据具体平台默认格式打包。 包的名称为 setup.py 中定义的 name, version以及指定的包格式,格式如:firstApp01-0.0.1.tar.gz。
Built distribution 使用 bdist 可以打出 built distribution,和源码包相比,由于预先构建好,所以安装更快:
使用上,和 sdist 一样,可以使用 --formats 指定包格式。如:
$ python setup.py bdist --formats=rpm
复制代码
同时为了简化操作,setuptools 提供了如下命令:
所以上面打 rpm 包可以使用:
$ python setup.py bdist_rpm
复制代码
Wheel Wheel 也是一种 built 包,而且是官方推荐的打包方式。也许你曾经遇见或使用过 egg 包,但现在 wheel 是官方推荐的打包方式 使用 wheel 打包,首先要安装 wheel:
$ pip install wheel
复制代码
然后使用 bdist_wheel 打包:
$ python setup.py bdist_wheel
复制代码
执行成功