发布python包
发布Python包到PyPI
发布Python包到PyPI是Python开发者分享自己代码的一种方式。最近写了个用LLM翻译arxiv论文的项目TransGPTex,第一次使用了python包的形式把这件事做了,而不是一个脚本。这样只要安装这个包,在任何目录都可以通过tgtex
命令调用了,个人还是相当满意。
Python的强大之处在于其丰富的库,使用pip
安装这些库非常方便。开发者可以将自己的代码打包成库,并上传到Python仓库供他人使用。这样在任何电脑上都可以通过pip install xxx
迅速装好,很方便。
但之前没有发布包的经验,看了网上一篇很详细的教程:发布Python包到pypi之后弄好了。
在这里结合一下自身的感受,记录一下发布Python包到PyPI的详细步骤。
1. PyPI账号注册
到PyPI发布包首先需要有一个pypi的账号。
1.1 注册
访问PyPI官网进行注册。
1.2 开启两步验证
要上传自己的包,需要开启两步验证。那个什么USB验证好像要硬件的,我选了那个Time-based one-time password(也就是TOTP)认证。IOS好像可以用密码管理器扫码,但我是安卓手机,好像没有默认的TOTP密码管理器。
我选了aegis这个开源软件,只要扫码然后把那6位号码填入即可。这个6位号码是1分钟刷新一次,安全性比较强。
1.3 添加API Tokens
然后需要添加一个API Token,这个token要存下来,后面使用twine上传编译的whl要用。
一般Linux把api
token存在~/.pypirc
里,Windows的~
目录是C:\Users\你的用户名
,所以在该目录下新建一个.pypirc
文件就行。
.pypirc
文件内容是:
1 | [pypi] |
2. 制作Python包
开发完库之后需要在外层配置一下setup.py
,声明一下这个库的必需信息。
setup.py
是Python包的核心文件,包含了包的详细信息。
1 | import setuptools |
3. 打包上传
之后就很简单,核心就是编译之后把.whl
文件传上去就行了。
3.1 安装必要的打包工具库
1 | pip install setuptools wheel twine |
3.2 将编写的库安装测试
1 | python setup.py develop |
这个是可选的,就是在当前目录下安装这个包,然后本地开发就可以直接import package
进去了。主要是用于测试包的行为是否符合预期。
3.3 打包成whl
1 | python setup.py bdist_wheel |
一旦3.2通过的话,就可以进行编译了。编译之后会在当前目录下生成个dist
目录,里面是打包好的whl文件。
3.4 上传
1 | twine upload dist/* |
最后,使用twine
上传包到PyPI。由于之前在~/.pypirc
里面配置好token信息了,这里直接上传就行。
4. 使用
使用pip
安装库后,即可直接使用。
1 | pip install transgptex |
完成上述步骤之后,就已经完成一个python包的上传了。