Python上载到PyPI

示例

一旦您setup.py的功能完全正常(请参阅“简介”),就很容易将包上传到PyPI。

设置一个.pypirc文件

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

# .pypirc文件

[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创建一个新帐户。仅第一次需要注册,尽管多次注册无害。

$ pythonsetup.pyregister -r pypitest

在包的根目录中:

$ twine upload dist/* -r pypitest

您的包裹现在应该可以通过您的帐户访问了。

测验

创建一个测试虚拟环境。尝试pip install从testpypi或PyPI打包。

# 使用virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# 来自testpypi的测试
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# 或从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创建一个新帐户。

$ pythonsetup.pyregister -r pypi
$ twine upload dist/*

而已!您的包裹现已上线。

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

文献资料

不要忘记为您的包装至少包括某种文档。PyPi采用默认格式语言reStructuredText。

自述文件

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

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

[metadata]
description-file = README.rst

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

发牌

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

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