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中以更易读的方式解释了一些许可证。