上传到 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 解释了一些许可证。