分发 Python 模块

作为一个受欢迎的开源开发项目,Python 具有活跃的贡献者和用户支持社区,并且根据开放源代码许可条款,其软件可供其他 Python 开发人员使用。

这使 Python 用户可以受益于其他人已经针对常见(有时甚至是稀有!)问题创建的解决方案,并可以有效地共享和协作,并有可能将自己的解决方案贡献给公共资源库。

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

Note

对于公司和其他机构用户,请注意,许多组织在使用和贡献开源软件方面都有自己的 Policy。在使用 Python 随附的分发和安装工具时,请考虑此类策略。

Key terms

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

  • Python 包装 Management 局是负责标准包装工具以及相关元数据和文件格式标准的维护和 Developing 的一组开发人员和文档作者。他们在GitHubBitbucket上维护各种工具,文档和问题跟踪程序。

  • distutils是 1998 年首次添加到 Python 标准库中的原始构建和分发系统。虽然distutils的直接使用已被逐步淘汰,但它仍为当前的打包和分发基础结构奠定了基础,并且不仅保持了标准的一部分库,但其名称可以pass其他方式保留(例如,用于协调 Python 打包标准开发的邮件列表的名称)。

  • setuptools是 2004 年首次发布的distutils的(大部分)直接替代品。与未修改的distutils工具相比,它最显着的添加是可以语句对其他软件包的依赖关系。当前建议将它作为distutils的更定期更新的替代方法,为广泛的 Python 版本中的最新打包标准提供一致的支持。

  • wheel(在此情况下)是一个将bdist_wheel命令添加到distutils/setuptools的项目。这会产生跨平台的二进制打包格式(称为_wheels 或“ wheel 文件”,并在 PEP 427中定义),该格式允许将 Python 库(甚至包括二进制 extensions 的库)安装在系统上,而无需在本地构建。

开源许可和协作

在世界上大多数 locale,软件自动受版权保护。这意味着其他开发人员需要获得复制,使用,修改和重新分发软件的明确许可。

开源许可是一种以相对一致的方式显式授予此类许可的方法,它允许开发人员pass免费提供各种问题的通用解决方案来有效地共享和协作。这使许多开发人员可以将更多的时间花在专注于特定情况下相对独特的问题上。

Python 随附的分发工具旨在使开发人员在选择时可以很直接地将自己的贡献返回给该通用软件库。

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

安装工具

标准库不包括支持现代 Python 打包标准的构建工具,因为核心开发团队发现,即使在较旧版本的 Python 上,始终如一地工作的标准工具也很重要。

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

python -m pip install setuptools wheel twine

Note

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

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

《 Python 打包用户指南》包含有关目前推荐的工具的更多详细信息。

阅读《 Python 打包用户指南》

《 Python 打包用户指南》涵盖了创建和发布项目所涉及的各种关键步骤和元素:

我如何…?

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

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

这不是一个容易的 Topic,但是这里有一些技巧:

  • 检查 Python 包装索引以查看名称是否已被使用

  • 检查诸如 GitHub,Bitbucket 等流行的托管站点,以查看是否已经存在具有该名称的项目

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

  • 避免使用特别常见的词,尤其是具有多种含义的词,因为它们会使用户在搜索软件时很难找到您的软件

…创建和分发二进制 extensions?

这实际上是一个非常复杂的主题,根据您要实现的目标,可以使用多种选择。有关更多信息和建议,请参见《 Python 打包用户指南》。