赞
踩
最近准备使用
twine upload dist/*
命令上传一下自己更新后的python,结果显示报错:
HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers inst
ead. See https://pypi.org/help/#apitoken and https://pypi.org/help/#trusted-publishers
这个原因是PyPI现在不再支持用户名/密码认证,而是要求使用API Tokens或Trusted Publishers进行认证。
为此登录PyPI准备制作一个API Tokens,结果PyPI要求2FA验证。研究了一下终于明白是怎么回事。所谓2FA验证就是通过两种方式验证身份,第一种就是常用的固定密码,第二种是随时间变化的动态密码。 对于国外的用户来说可以用手机接受动态验证码,对国内的用户来说,这个动态验证码怎么生成呢?答案是通过安装和运行一个开源的python包来实时生成。具体步骤是
步骤1.1:安装开源包
$ pip install pyotp
步骤1.2:在pypi网站上点击
在现实的二维下方会有一串字符串密钥,例如SC5GNDMEV2FPHHLZQW7IZ6UCFXFBNBVI,
步骤1.3:将这一串密钥拷贝至如下代码中执行
import pyotp key = 'SC5GNDMEV2FPHHLZQW7IZ6UCFXFBNBVI' totp = pyotp.TOTP(key) print(totp.now())
步骤1.4:生成的结果6位数就是动态验证码拷贝至验证码输入框里。
如果验证不通过可能是因为操作系统的时间不准确造成的,可以通过右击电脑时间 调整日期时间,将自动设置时间-自动设置时区 打开。再重新运行验证码的生成程序。
步骤1.55:如果验证通过则前面那一串密钥 SC5GNDMEV2FPHHLZQW7IZ6UCFXFBNBVI 就是你今后的2FA身份验证的基础了,将这个密钥以及上面的代码都保存好,需要2FA验证时,就运行生成动态验证码。
接下来就是生成API Token并用于上传包。步骤如下:
2.1 生成API Token:
2.2 将令牌设置为环境变量
在Windows下设置环境变量,在“系统变量”或“用户变量”中点新建两个变量:
第一个变量:
变量名:TWINE_USERNAME
变量值:__token__
第二个变量:
变量名:TWINE_PASSWORD
变量值:你的API-TOKEN(确保不包括引号)
2.3 使用twine upload dist/*
上传你的包到PyPI,twine
将会使用你设置的TWINE_USERNAME
和TWINE_PASSWORD
环境变量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。