开启2FA后,如何通过twine向TestPyPI和PyPI上传Python包?
开启2FA后向TestPyPI/PyPI上传包的方法
当开启双因素认证(2FA)后,无法再用账号密码直接上传包,必须用API令牌或可信发布者两种方式,具体操作如下:
一、使用API令牌上传(手动上传首选)
1. 生成API令牌
- 登录TestPyPI或PyPI账号,进入账户设置中的「API tokens」页面
- 点击「Create token」,命名令牌(比如“upload-token”),权限选择「Entire account」(全账户权限)或指定单个包权限,生成后立即复制令牌(令牌只会显示一次,务必妥善保存)
2. 上传包的两种方式
方式1:命令行直接传入令牌
执行上传命令时,用户名固定填__token__,密码填你刚复制的API令牌:
- 上传到TestPyPI:
twine upload -r testpypi dist/* -u __token__ -p 你的TestPyPI_API令牌 - 上传到PyPI:
twine upload dist/* -u __token__ -p 你的PyPI_API令牌
方式2:配置本地.pypirc文件(无需每次输令牌)
在Windows用户目录(C:\Users\你的用户名)下创建.pypirc文件,填入以下内容(替换令牌为你自己的):
[distutils] index-servers = pypi testpypi [pypi] repository = https://upload.pypi.org/legacy/ username = __token__ password = 你的PyPI_API令牌 [testpypi] repository = https://test.pypi.org/legacy/ username = __token__ password = 你的TestPyPI_API令牌
之后直接执行原上传命令即可完成上传:
- 上传TestPyPI:
twine upload -r testpypi dist/* - 上传PyPI:
twine upload dist/*
二、使用可信发布者上传(自动化场景首选)
适合CI/CD自动化上传(比如GitHub Actions、GitLab CI),无需手动管理令牌:
- 登录TestPyPI/PyPI,进入对应包的设置页面,找到「Trusted publishers」选项
- 点击「Add publisher」,选择你的代码托管平台(如GitHub),填写仓库名称、触发条件(比如指定分支、标签)
- 在CI/CD流程中配置上传步骤,以GitHub Actions为例,可使用官方动作完成自动上传,无需手动输入身份信息
内容的提问来源于stack exchange,提问作者zircon
相关产品推荐
相关产品推荐

