享学课堂-分发 Python 模块

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

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

本指南涵盖了分发过程.在指南中安装的其他Python项目, 请参阅 安装指南.http://www.2xkt.com/node/1092

Key terms

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

Python包装管理局是负责标准包装工具以及相关元数据和文件格式标准的维护和演变的开发人员和文档编制人员。他们在GitHub和BitBucket上维护各种工具,文档和问题跟踪器。

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 Packaging Index

如何开始...?

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

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

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

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

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

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

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

... create and distribute binary extensions?

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

也可以看看

Python包装用户指南:二进制扩展

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402A0FV8500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券