PyPI是否不再支持用户名密码上传包?是否有其他发布认证方式?
PyPI包发布的其他认证方式
目前PyPI已强化安全机制,启用2FA后常规用户名密码上传会触发403权限错误,也就是你遇到的这个情况。除了直接输入__token__作为用户名、API Token作为密码的方式外,还有以下几种更便捷的认证方式:
使用
.pypirc配置文件
在用户根目录下创建.pypirc文件,填入以下内容(替换为你的API Token):[pypi] username = __token__ password = 你的PyPI API Token后续使用
twine upload dist/*时,工具会自动读取该文件中的凭证,无需手动输入账号密码。使用环境变量
在终端中设置环境变量(不同系统命令略有差异):# Linux/macOS export TWINE_USERNAME='__token__' export TWINE_PASSWORD='你的PyPI API Token' # Windows(PowerShell) $env:TWINE_USERNAME='__token__' $env:TWINE_PASSWORD='你的PyPI API Token'设置完成后直接运行
twine upload dist/*即可,工具会自动读取环境变量中的凭证。使用密钥环(Keyring)
先安装密钥环工具:pip install keyring然后将API Token存入密钥环:
keyring set https://upload.pypi.org/legacy/ __token__执行后按提示输入你的API Token即可。后续使用twine上传时,工具会自动从密钥环中获取凭证,无需手动输入。
补充说明:twine保留用户名密码输入项是为了兼容历史场景,但当前PyPI启用2FA后已不再支持纯用户名密码认证,因此必须使用基于令牌的认证方式。
内容的提问来源于stack exchange,提问作者Pavel Komarov
相关产品推荐
相关产品推荐

