Skip to main content

分发Python模块

Email:

distutils-sig@python.org

作为一个流行的开源开发项目,Python有一个活跃的贡献者和用户的支持社区,也使他们的软件可供其他Python开发人员使用开源许可证条款。

这允许Python用户有效地共享和协作,从其他人已经创建的常见(有时甚至罕见的)问题的解决方案中受益,以及潜在地为公共池贡献自己的解决方案。

本指南涵盖了过程的分发部分。有关安装其他Python项目的指南,请参阅 安装指南

注解

对于公司和其他机构用户,请注意,许多组织有关于使用和贡献开源软件的自己的政策。在使用Python提供的分发和安装工具时,请考虑这些策略。

关键术语

  • Python包装索引 是可供其他Python用户使用的开源许可软件包的公共存储库

  • Python包装管理局 是负责标准包装工具和相关元数据和文件格式标准的维护和演进的开发人员和文档作者组。他们在 GitHubBitBucket 上维护各种工具,文档和问题跟踪器。

  • distutils 是在1998年首次添加到Python标准库的原始构建和分发系统。虽然直接使用 distutils 正在逐步淘汰,但它仍然为当前的包装和分发基础设施奠定了基础,它不仅仅是标准的一部分库,但它的名字存在其他方式(如用于协调Python包装标准开发的邮件列表的名称)。

  • setuptoolsdistutils (在很大程度上)的替代,首次发布于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 的更多详细信息。

阅读指南

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

我如何...?

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

...为我的项目选择一个名称?

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

  • 请检查Python打包索引以查看该名称是否已在使用

  • 检查像GitHub,BitBucket等流行托管网站,看看是否已经有一个名称的项目

  • 检查在网络搜索中出现的您正在考虑的名称

  • 避免特别常见的词,特别是具有多重含义的词,因为它们可能使用户难以在搜索时找到您的软件

...创建和分发二进制扩展?

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