上传到 PyPI

一旦你的 setup.py 功能齐全(参见简介 ),就可以很容易地将你的包上传到 PyPI

设置 .pypirc 文件

此文件存储登录名和密码以验证你的帐户。它通常存储在你的主目录中。

# .pypirc file

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

它是更安全的使用 twine 上载包,所以请确保已安装。

$ pip install twine

注册并上传到 testpypi(可选)

注意PyPI 不允许覆盖上传的包 ,因此首先在专用测试服务器上测试你的部署是谨慎的,例如 testpypi。将讨论此选项。在上载之前考虑包的版本控制方案 ,例如日历版本控制语义版本控制

登录,或在 testpypi 创建一个新帐户。注册仅在第一次需要,虽然注册不止一次是无害的。

$ python setup.py register -r pypitest

在包的根目录中:

$ twine upload dist/* -r pypitest

你的套餐现在可以通过你的帐户访问。

测试

制作测试虚拟环境。尝试从 testpypi 或 PyPI 中提取你的包。

# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...

(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100

如果成功,你的包裹最不可导入。你可能会考虑在最终上传到 PyPI 之前测试你的 API。如果你在测试期间打包失败,请不要担心。你仍然可以修复它,重新上传到 testpypi 并再次测试。

注册并上传到 PyPI

确保安装了 twine

$ pip install twine

登录,或在 PyPI 创建一个新帐户。

$ python setup.py register -r pypi
$ twine upload dist/*

而已! 你的包裹现已上线

如果你发现了错误,只需上传新版本的软件包即可。

文档

不要忘记至少包含一些包装文档。PyPi 采用默认格式化语言 reStructuredText

自述

如果你的软件包没有大文档,请在 README.rst 文件中包含可以帮助其他用户的内容。文件准备好后,需要另外一个来告诉 PyPi 显示它。

创建 setup.cfg 文件并将这两行放入其中:

[metadata]
description-file = README.rst

请注意,如果你尝试将 Markdown 文件放入包中,PyPi 会将其作为纯文本文件读取而不进行任何格式化。

许可

我们通常非常欢迎你使用其中一个 OpenSource 许可证LICENSE.txt 文件放入你的软件包中,以告知用户他们是否可以在商业项目中使用你的软件包,或者你的代码是否可以与他们的许可证一起使用。

以更易读的方式, TL; DR 解释了一些许可证。