Python 中的包管理
为什么使用包管理
-
Python 的模块或者源文件直接可以复制到目标目录中, 就可以使用
-
为了更多项目调用使用或者共享给别人, 就需要打包发布到网络, 以便供人使用, 当然目的也是为了复用
Pypi (Python Package Index), 公共的模块存储中心 : https://pypi.org/
主要工具
distutils
- 官方库 distutils, 使用安装脚本setup.py 来构建, 安装包
- 从1998年就是标准库的一部分, 直到2000年停止开发
setuptools
- 它是替代distutils 的增强工具集, 包含easy_install 工具, 使用ez_setup.py 文件
- 支持egg 格式的构建和安装, 提供查询、下载、安装、构建、发布、管理等包管理功能
- setuptools 是包管理的核心模块
后来, setuptools 开发缓慢, 出现基于setuptools 的distriubute 来代替setuptools, 直到2013年这两个项目重新合并, distribute被废弃, setuptools 依然是Python 安装打包的标准
pip
- pip 目前包管理的事实标准
- 构建在setuptools 智商, 代替了easy_install, 同样提供了丰富的包管理功能
- Pyhton 3.4之前, 需要单独安装, 从Python 3.4之后开始直接包含在安装文件中
wheel
-
wheel 格式定义在PEP 427 中
-
wheel 文件中不包含.pyc 文件
-
提供bdist_wheel 作为setuptools 的扩展命令, 这个命令可以用来生成新的打包格式wheel
-
pip 从1.4 版本开始提供了一个wheel 子命令来安装wheel包, 当然需要先安装wheel 模块, 让Pyhton 库以二进制形式安装, 而不需要本地编译
使用 setup.py 打包
- setup.py 创建一个源代码分发包的例子, 参照例子 : https://docs.python.org/3.5/distutils/setupscript.html
- 在帮助文档chm上搜索setup, 点击最上面 Distributing Python Modules (Legacy version), 然后选择 Writing the Setup Script
首先, 在项目根目录下构建一个setup.py 文件, setup.py如下 :
from