学会如何制作 python 包后,如果你觉得自己开发的模块需要共享给其他人,可以把 Python 包发布到 Pypi(Python Package Index
)。Pypi 类似于 Java 的 maven 仓库。
注册账号
到下面两个地址注册账户:
配置
分别获取 PyPI token 参考 https://pypi.org/help/#apitoken。
创建 ~/.pypirc
文件,此文件中配置 PyPI
访问地址和账号。配置示例:
[server-login]
username = xiexianbin
password = password
[pypi]
username = __token__ # 必须配置为 __token__,参考 https://pypi.org/help/#invalid-auth
password = <user password> # 官方说要使用 token,实际使用密码成功
通过 setup.py 上传
以 Pecan 使用介绍 为例,修改 setup.py
setup(
...
author='xiexianbin',
author_email='me@xiexianbin.cn',
url='https://www.xiexianbin.cn',
...
注册项目
到项目根目录下,执行如下命令进行项目信息注册:
$ python3 setup.py check
$ python3 setup.py register
running register
running check
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]:
1
Username: xiexianbin
Password:
Registering test_pecan to https://upload.pypi.org/legacy/
Server response (410): Project pre-registration is no longer required or supported, upload your files instead.
上传源码
$ python3 setup.py sdist upload
通过 twine 上传
twine 是一个专门用于与 pypi 进行交互的工具。
安装
pip3 install twine
注册项目
到项目根目录下,执行如下命令进行项目信息注册:
twine register dist/xxx.whl
检查
twine check dist/*
上传源码
twine upload dist/*
至此,源码包已经上传完毕。
示例
FAQ
Invalid or non-existent authentication
$ python3 setup.py sdist upload
...
running upload
Submitting dist/xxx-0.1.tar.gz to https://upload.pypi.org/legacy/
Upload failed (403): Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.
error: Upload failed (403): Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.
修复方式:
在 ~/.pypirc
文件,添加如下配置:
[server-login]
username = xiexianbin
password = password
Invalid value for blake2_256_digest
$ python3 setup.py sdist upload
...
running upload
Submitting dist/test_pecan-0.1.tar.gz to https://upload.pypi.org/legacy/
Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest.
error: Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest.