Python 高手编程系列七百四十八:上传一个包

对于 Python 包而言,如果没有有组织的保存、上传和下载方式,那么它是没有用的。
Python 包索引是 Python 社区开源包的主要来源。任何人都可以免费上传新的包,唯一的要
求就是在 PyPI 网站上进行注册。
当然,你不必局限于这个索引,而且所有打包工具都支持使用其他包仓库。对于在内
部组织分发或为了开发目的而分发的闭源代码来说,这一点特别有用。下一章将会解释这
些打包用法的细节,以及关于如何创建你自己的包索引的说明。本章我们只关注向 PyPI
开源上传,并稍微介绍一下指定其他仓库的方法。
PyPI — Python 包索引
如前所述,PyPI 是开源包发行版的官方来源。从 PyPI 下载不需要任何账号或者权限。
你唯一需要的是一个包管理器,可以从 PyPI 下载新的发行版。你的首选应该是 pip。
上传到 PyPI 或其他包索引
任何人都可以注册并向 PyPI 上传包,只要他/她有注册账号就行。包与用户绑定,因此在默认情况下,只有注册了包名称的用户是它的管理员,并且可以上传新的发行版。对
于大型项目来说,这可能是一个问题,因此有一个选项可以指定其他用户作为包的维护者,
以便他们能够上传新的发行版。
上传一个包的最简单方法就是使用 setup.py 脚本的 upload 命令:
$ python setup.py upload
这里的是创建要上传的发行版的命令列表。只有在相同的
setup.py 执行期间创建的发行版才会被上传到仓库中。因此,如果你想要同时上传源代
码发行版、构建发行版和 wheel 包,那么你需要使用下列命令:
$ python setup.py sdist bdist bdist_ wheel upload
使用 setup.py 进行上传时,你不能重复使用已经构建的发行版,每次上传时都必须
重新构建。这可能是有意义的,但对于大型项目或复杂项目来说很不方便,对于这些项目
来说创建发行版实际上可能需要相当长的时间。setup.py upload 的另一个问题是,在
某些 Python 版本中它可以使用纯文本 HTTP 连接或未验证的 HTTPS 连接。这就是为什么
推荐使用 twine 作为 setup.py upload 的安全替代。
twine 是与 PyPI 交互的实用程序,它目前只有一个作用 — 将包安全地上传到仓库
中。它支持任何打包格式,并始终确保连接安全。它还允许你上传已经创建的文件,这样
你能够在发布之前对发行版进行测试。twine 的一个示例用法仍然需要调用 setup.py 来
构建发行版,如下所示:
$ python setup.py sdist bdist
_wheel
$ twine upload dist/*
如果你还没有注册过这个包,那么上传会失败,因为你需要首先注册它。你也可以使
用 twine 来完成注册,如下所示:
$ twine register dist/*
pypirc
.pypirc 是一个配置文件,其中保存有关 Python 包仓库的信息。它应该位于你的主
目录中。这个文件的格式如下所示:
[distutils]
index-servers =
pypi
other
[pypi]
repository:
username:
password:
[other]
repository: https://example.com/pypi
username:
password:
distutils 区段应该包含 index-servers 变量,其中列出描述所有可用仓库及其
证书的所有区段。每个仓库区段中只能修改下面这 3 个变量。
• repository:包仓库的 URL(默认是 https://www.python.org/pypi)。
• username:给定仓库中授权的用户名。
• password:明文的授权用户密码。
注意,明文保存你的仓库密码可能不是最明智的安全选择。你可以一直将其空着,必
要时再提示你输入。
所有为 Python 构建的打包工具都应该遵守.pypirc 文件。虽然不是每个打包相关的
实用程序都满足这一要求,但大多数重要的实用程序都支持这一点,例如 pip、twine、
distutils 和 setuptools。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值