分发 Python 模块 — Python 文档

来自菜鸟教程
Python/docs/3.9/distributing/index
跳转至:导航、​搜索

分发 Python 模块

电子邮件
distutils-sig@python.org

作为一个流行的开源开发项目,Python 拥有一个由贡献者和用户组成的活跃支持社区,这些社区还可以让其他 Python 开发人员根据开源许可条款使用他们的软件。

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

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

笔记

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


关键术语

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


开源许可和协作

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

开源许可是一种以相对一致的方式明确授予此类许可的方式,允许开发人员通过免费提供各种问题的通用解决方案来有效地共享和协作。 这使许多开发人员可以腾出更多时间专注于针对其特定情况相对独特的问题。

Python 提供的分发工具旨在使开发人员可以相当简单地将自己的贡献回馈给该公共软件池,如果他们选择这样做的话。

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


安装工具

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

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

python -m pip install setuptools wheel twine

笔记

对于 POSIX 用户(包括 macOS 和 Linux 用户),这些说明假定使用 虚拟环境

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


Python Packaging User Guide 包含有关 当前推荐工具 的更多详细信息。


阅读 Python 打包用户指南

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


我如何能…?

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

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

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

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


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

这实际上是一个相当复杂的主题,有多种替代方案可供选择,具体取决于您要实现的目标。 有关更多信息和建议,请参阅 Python Packaging User Guide。