分发 Python 模块

电子邮件:distutils-sig @ python org

作为一个流行的开源项目,Python拥有活跃的社区、贡献者和用户支持,Python开发者可以在开源许可下使用Python。

这允许Python用户可以进行分享以及有效的合作,其他人可以直接使用已有的公共方案解决 (甚至是一些罕见的)问题, 你也可以贡献自己的解决放案到公共资源区.

本指南涵盖了分发过程.在指南中安装的其他Python项目, 请参阅 安装指南.

注意

对于公司和其他机构的用户, be aware that many organisations have their own policies around using and contributing to open source software.在使用Python提供的分发和安装工具时,请考虑这些策略。

Key terms

  • Python包装索引是可供其他Python用户使用的开源许可包的公共存储库
  • Python包装管理局是负责标准包装工具以及相关元数据和文件格式标准的维护和演变的开发人员和文档编制人员。他们在GitHubBitBucket上维护各种工具,文档和问题跟踪器。
  • distutils是在1998年首次添加到Python标准库的原始构建和分发系统。虽然直接使用distutils正在逐步淘汰,但它仍然为当前的包装和分销基础设施奠定了基础,它不仅仅是标准库的一部分,而且它的名称也存在于其他方面例如用于协调Python包装标准开发的邮件列表的名称)。
  • setuptools是第一次发布于2004年的distutils的(大部分)插入替换。其在未修改的distutils工具上最显着的添加是能够声明对其他包的依赖。目前建议将其作为distutils的更经常更新的替代方案,为更广泛的Python版本的最新包装标准提供一致的支持。
  • wheel(在此上下文中)是将bdist_wheel命令添加到distutils / setuptools的项目。这产生了跨平台二进制打包格式(称为“轮”或“轮文件”,并在 PEP 427中定义),允许Python库(包括二进制扩展)安装在系统上,而不需要在本地构建。

Open source licensing and collaboration

在世界的大部分地区,软件自动受版权保护。这意味着其他开发人员需要明确的权限来复制,使用,修改和重新分发软件。

开源许可是以相对一致的方式明确授予这样的许可的一种方式,允许开发者通过为各种问题自由地提供共同的解决方案来有效地共享和协作。这使许多开发人员可以自由地花更多的时间专注于对他们的具体情况相对独特的问题。

提供与Python的分发工具的设计使其相当简单为开发者做出自己的贡献回到了软件公共池,如果他们选择这样做。

相同的分发工具也可以用于在组织内分发软件,而不管该软件是否作为开源软件发布。

Installing the tools

标准库不包括支持现代Python包装标准的构建工具,因为核心开发团队发现,使用标准工具(即使在旧版本的Python上)也是一致的,这一点很重要。

当前推荐的构建和分发工具可以通过在命令行中调用pip模块来安装:

python -m pip install setuptools wheel twine

注意

对于POSIX用户(包括Mac OS X和Linux用户),这些说明假设使用virtual environment

对于Windows用户,这些说明假定在安装Python时选择了调整系统PATH环境变量的选项。

Python Packaging用户指南包含有关当前推荐的工具的更多详细信息。

Reading the guide

Python包装用户指南涵盖了创建项目中涉及的各种关键步骤和元素:

如何开始...?

这些是一些常见任务的快速答案或链接。

... 为我们的工程选择一个合适的名字

这不是一个容易的话题,但这里有一些提示:

  • 请检查Python打包索引以查看该名称是否已在使用
  • 检查像GitHub,BitBucket等流行托管网站,看看是否已经有一个名称的项目
  • 检查在网络搜索中出现的是您正在考虑的名称
  • 避免特别常见的词,特别是具有多重含义的词,因为它们可能使用户难以在搜索时找到您的软件

... create and distribute binary extensions?

这实际上是一个相当复杂的主题,有各种各样的替代品,取决于你想要实现的目标。有关详细信息和建议,请参阅Python包装用户指南。