setuptools 和setup.py
setuptools
主要用户编译,分发和安装python包的一个工具,特别在包依赖的场景非常有用。setup.py
脚本主要作用于向包管理工具setuptools
说明你的模块分发细节,所以setuptools
支持大量命令以操作你的包。setup脚本主要调用一个setup()
方法,许多提供给setuptools
的信息都以key value
参数形式提供给setup()
方法。
你所需要做的事
对于包开发和和使用者,所需要的做的事情:
- 编写setup.py脚本,用户处理你的包
- (可选)编写setup配置文件
- 创建源码分发文件
python setup.py bdist
基础概念
- module模块: module是python 中代码重用的基本丹云单元,一个module可以通过
import
语句导入到另外一个module;module分为pure python module
(纯python模块),extension module
(扩展模块)和package
(包) - pure python module: 纯python模块是使用python语言编写的模块,单一的
.py
文件作为一个模块使用,也就是一个.py
可以称为模块了 - extension module: 扩展模块是用底层的 C/C++、Objective-C或 Java 编写的模块,通常包含了一个动态链接库,比如 so、dll 或 Java,目前 distutils 只支持 C/C++ 和 Objective-C,不支持 Java 编写扩展模块;但是 python 提供了一个 JCC 这样一个用于生成访问 Java 类接口的 C++ 代码的胶水模块,应该也是可以使用 Java 编写模块的
- package: 包是一个带有 init.py 文件的文件夹,用于包含其他模块
- root package: root package 是包的最顶层,它不是实质性的包,因为它不包含 init.py 文件。大量的标准库位于 root package,因为它们不属于一个任何更大的模块集合了。实际上,每一个 sys.path 列举出来的文件夹都是 root package,你可以在这些文件夹中找到大量的模块
- distribution: 模块分发,一个归档一起的python模块集合,他作为一个可下载安装的资源,方便用户使用,作为开发者便需要努力创建一个易于使用的
distribution
- distribution root: 源代码树的最顶层, 也就是
setup.py
所在的位置
源码分发文件和二进制分发文件
源码分发文件比二进制分发文件更适合跨平台,这样使用者可以在自己机器编译
网友评论