返回介绍

建议78:将包发布到 PyPI

发布于 2024-01-30 22:19:09 字数 2805 浏览 0 评论 0 收藏 0

建立项目之后,添加了相应的业务代码,并通过测试之后,就可以考虑发布给下游用户了。如果是项目内部协作,把项目打一个zip包或者tar ball发出去,最简单不过了。不过尽管如此简单,setuptools仍然提供了完善的支持。

>sudo python setup.py sdist --formats=zip,gztar
running sdist
running check
creating arithmetic-1.0
making hard links in arithmetic-1.0...
hard linking arithmetic.py -> arithmetic-1.0
hard linking setup.py -> arithmetic-1.0
creating dist
creating 'dist/arithmetic-1.0.zip' and adding 'arithmetic-1.0' to it
adding 'arithmetic-1.0/arithmetic.py'
adding 'arithmetic-1.0/PKG-INFO'
adding 'arithmetic-1.0/setup.py'
Creating tar archive
removing 'arithmetic-1.0' (and everything under it)

setuptools的sdist命令的意思是构建一个源代码发行包,它将根据调用setup()函数时给定的实参将整个项目打包(和压缩)。根据当前的平台(操作系统)不同,产出的文件也是不一样的。一般在MS Windows系统下,产生.zip格式的压缩包,而在GNU Linux或Mac OS X系统下,产生.tar.gz格式的压缩包。考虑到最终安装程序包的用户可能在不同的系统下使用,需要产品指定(或更多)格式的包文件,可以使用--formats参数。如上列指定产生.zip格式和.tar.gz格式。最终产生的包文件放在./dist目录下。

>ls dist 
arithmetic-1.0.tar.gz arithmetic-1.0.zip

产生这两个包以后,就可以发布给项目的下游合作者了。发布方式可以是邮件、FTP,或者直接使用IM传送。下游开发者收到后有两种安装方式:一种是解压缩,然后进入setup.py文件所在的目录执行python setup.py install命令安装;另一种是使用pip安装,执行pip install arithmetic-1.0.tar.gz即可。

对于个人项目或者迷你团队而言,通过邮件、FTP或者IM发布无可厚非,但如果是较大的团队一起协作一个项目,那么最好是把包发布到PyPI上面。可以是pypi.python.org这个官方的PyPI,也可以是团队架设的私有PyPI。在这里,先讲一下怎么把包发布到官方的PyPI。

其实标准库distutils自身已经带有发布到PyPI的功能,那就是register和upload命令。

$ python setup.py --help-commands
Standard commands:
...
  register     register the distribution with the Python package index
...
  upload       upload binary package to PyPI
...

register命令用以在PyPI上面注册一个包,这个包名必须是尚未使用过的。在注册包名之前,先在PyPI上注册一个用户,可以通过PyPI网页注册,也可以直接使用register命令提供的选项注册。

$ python setup.py register
...
We need to know who you are, so please choose either:
 1. use your existing login,
 2. register as a new user,
 3. have the server generate a new password for you (and email it to you), or
 4. quit
Your selection [default 1]: 

上面第2个选项就是用来注册新用户的,选中之后向导将会指引用户输入用户名、密码和邮箱等信息,很快就可以注册完成,在此不展开说了。如果已经有了PyPI账号,那么选择第1个选项,输入用户名和密码,验证通过以后,distutils向PyPI申请注册包名,一般都能够成功。但如果这个包名已经被别的用户使用过了,那会引发一个403错误,指出你不能把这个包的信息存储到PyPI。

$ python setup.py register -n
running register
running check
...
Registering arithmetic to http://pypi.python.org/pypi
Server response (200): OK

包名注册之后,就可以把包上传到PyPI了。

$ python setup.py sdist upload
running sdist
running check
writing manifest file 'MANIFEST'
creating arithmetic-1.0
making hard links in arithmetic-1.0...
hard linking arithmetic.py -> arithmetic-1.0
hard linking setup.py -> arithmetic-1.0
Creating tar archive
removing 'arithmetic-1.0' (and everything under it)
running upload
Submitting dist/arithmetic-1.0.tar.gz to http://pypi.python.org/pypi
Server response (200): OK

上传之后,就可以通知合作者使用setuptools/pip安装了。

pip install arithmetic

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文