分发 Python 模块¶
作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。
这允许Python用户有效地共享和协作,从其他人已经创建的解决方案中受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。
本指南涵盖了分发部分的流程。有关安装其他Python项目的指南,请参阅 安装指南。
注解
对于企业和其他机构用户,请注意许多组织都有自己的政策来使用和贡献开源软件。在使用Python提供的分发和安装工具时,请考虑这些政策。
关键术语¶
Python Packaging Index 是一个开源许可的软件包公共存储库,可供所有 Python 用户使用。
Python Packaging Authority 是负责标准打包工具以及相关元数据和文件格式标准维护与改进的开发人员和文档作者团队。 他们基于 GitHub 和 Bitbucket 这两个平台维护着各种工具、文档和问题追踪系统。
distutils
是1998年首次添加到Python标准库的原始构建和分发系统。虽然直接使用distutils
正在逐步淘汰,但它仍然为当前的打包和分发基础架构奠定了基础它不仅仍然是标准库的一部分,而且它的名称还以其他方式存在(例如用于协调Python包装标准开发的邮件列表的名称)。setuptools (在很大程序上)是作为
distutils
的取代者,于 2004 年首次发布。它对未经修改的distutils
工具最重要的补充是能够声明对其他包的依赖。目前它被推荐用来替代distutils
,其更新更为频繁,在更为多样的 Python 版本之上为最新的包标准提供持续支持。wheel (在此上下文中)是一个将
bdist_wheel
命令添加到distutils
/setuptools 的项目。这产生了一个跨平台的二进制打包格式(称为“轮子”或“轮子文件”,并在 PEP 427 中定义),它允许在系统上安装Python库,甚至包括二进制扩展的库,而不需在本地进行构建。
开源许可与协作¶
在世界上大多数地方,软件自动受版权保护。这意味着其他开发人员需要明确的权限来复制,使用,修改和重新分发软件。
开源许可是一种以相对一致的方式明确授予此类权限的方式,允许开发人员通过为各种问题免费提供通用解决方案来有效地共享和协作。这使得许多开发人员可以将更多时间用于关注他们特定情况相对独特的问题。
Python提供的分发工具旨在使开发人员选择开源时,可以合理地直接将其自己的贡献回馈到该公共软件池。
无论该软件是否作为开源软件发布,相同的分发工具也可用于在组织内分发软件。
安装工具¶
标准库不包括支持现代Python打包标准的构建工具,因为核心开发团队已经发现,即使在旧版本的Python上,使用一致工作的标准工具也很重要。
可以通过在命令行调用 pip
模块来安装当前推荐的构建和分发工具:
python -m pip install setuptools wheel twine
注解
对于POSIX用户(包括Mac OS X和Linux用户),这些说明假定使用 virtual environment 。
对于Windows用户,这些说明假定在安装Python时选择了调整系统PATH环境变量的选项。
Python打包指南包含有关 currently recommended tools 的更多详细信息。