分发python模块¶
作为一个流行的开源开发项目,python有一个由贡献者和用户组成的活跃的支持社区,这也使得其他python开发人员可以在开源许可条款下使用他们的软件。
这使得python用户能够有效地共享和协作,受益于其他人已经创建的公共解决方案(有时甚至很少!)问题,以及可能为公共池贡献自己的解决方案。
本指南涵盖了流程的分发部分。有关安装其他Python项目的指南,请参阅 installation guide .
注解
对于公司和其他机构用户,请注意许多组织都有自己的政策来使用和贡献开源软件。在使用随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 /设置工具。这将生成跨平台二进制打包格式(称为"wheels"或"wheel files"),并在 PEP 427 )这允许在系统上安装Python库,甚至包括二进制扩展,而无需在本地构建。
开源许可和协作¶
在世界的大多数地方,软件都会自动被版权所覆盖。这意味着其他开发人员需要明确的权限来复制、使用、修改和重新发布软件。
开源许可是一种以相对一致的方式明确授予此类许可的方式,允许开发人员通过免费提供各种问题的通用解决方案来高效地共享和协作。这使得许多开发人员可以自由地将更多的时间花在针对特定情况相对独特的问题上。
python提供的分发工具旨在使开发人员在选择这样做时,能够相当直接地将自己的贡献返回到通用软件池中。
同样的分发工具也可以用于在组织内分发软件,不管该软件是否作为开源软件发布。
安装工具¶
标准库不包括支持现代Python打包标准的构建工具,因为核心开发团队发现,即使是在旧版本的Python上,让标准工具持续工作也很重要。
可以通过调用 pip
命令行模块:
python -m pip install setuptools wheel twine
注解
对于POSIX用户(包括Mac OS X和Linux用户),这些说明假定使用 virtual environment .
对于Windows用户,这些说明假定在安装python时选择了调整系统路径环境变量的选项。
《python packaging用户指南》包含有关 currently recommended tools .
阅读python packaging用户指南¶
《python packaging用户指南》涵盖了创建和发布项目所涉及的各种关键步骤和元素:
I.怎么样?¶
这些是一些常见任务的快速答案或链接。
…为我的项目选择名称?¶
这不是一个简单的话题,但以下是一些提示:
检查python打包索引以查看名称是否已在使用中
检查流行的托管站点,如GitHub、Bitbucket等,看看是否已经有一个同名的项目
在网络搜索中查找您正在考虑的名称
避免使用特别常见的词,尤其是具有多种含义的词,因为它们会使用户在搜索软件时很难找到您的软件。
... 创建和分发二进制扩展?¶
这实际上是一个非常复杂的主题,根据您的目标,有多种可选方案可供选择。有关更多信息和建议,请参阅《Python打包用户指南》。