Pypi配置API Token
技术背景
在许久之前写的一篇博客中,我们介绍过使用twine向pypi上传我们自己的开源包的方法。最近发现这个方法已经不再支持了(报错信息如下所示),现在最新版需要使用API Token进行文件上传,这里大致介绍一下配置的方法。
$ python3 setup.py check
$ python3 setup.py sdist bdist_wheel
$ twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: dechin
Enter your password:
Uploading hadder-3.4-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22.0k/22.0k [00:01<00:00, 20.9kB/s]
Error during upload. Retry with the --verbose option for more details.
HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://pypi.org/help/#apitoken and https://pypi.org/help/#trusted-publishers
Pypi主页登录
因为许久没有登录,所以很多人登录Pypi主页的时候可能需要添加一下双因子认证:
点击这个生成覆盖码的按钮,会生成一系列的一次性覆盖码,建议保存到本地:
这个覆盖码,是用来修改账号配置的,跟我们上传whl包没有关系。但是每修改一次账号配置,就会使用一个覆盖码。然后选择继续:
我们选择一个覆盖码输入,用于配置双因子认证:
双因子认证模式有两种,一种是应用认证,一种是设备认证,这里如果使用使用的是Win11操作系统,可以选择设备认证,然后用Windows Hello进行认证:
点击设定设备:
这样就完成了Pypi账号登录和双因子认证的安全设定。
API Token获取
在登录Pypi主页之后,在账号设定界面往下拉,找到API tokens选项
选择添加API token,可以给这个token设定一个专门的用途名称,还可以分仓库管理token。不过这里我为了方便,直接统一使用一个token进行上传:
然后就会生成一个token:
配置API Token
其实官方推荐的方法是把Token保存到~/.pypirc文件里面去,像这个样子:
但是不知为何,在我的环境下这个方法不奏效。尝试过在twine upload的时候把配置文件也加上,但还是不起作用,有知道的高手可以方便评论区告知一下原因。最后我使用的是keyring配置的方法(keyring是安装twine的时候一起安装了,不需要自己再去手动安装):
$ keyring set https://upload.pypi.org/legacy/ __token__
Password for '__token__' in 'https://upload.pypi.org/legacy/':
账号名就是__token__,密码就是那一串token复制粘贴进来。最后,还是成功的完成了upload:
$ twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Uploading hadder-3.4-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22.0k/22.0k [00:02<00:00, 8.98kB/s]
Uploading hadder-3.4.tar.gz
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22.5k/22.5k [00:01<00:00, 14.9kB/s]
View at:
https://pypi.org/project/hadder/3.4/
总结概要
这篇文章介绍了新版Pypi上传Python编译后的whl包的操作流程,主要内容为登录设置双因子认证,以及获取API Token并使用token上传whl包的方法。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/pypi-api.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
Pypi配置API Token的更多相关文章
- 微信企业号C#开发配置API
微信开发第一步 : 配置API,实现接收消息服务配置 1.在下图界面先填好内容,事件消息处理可自行选择,我这里是没处理的 2.第二步: 使用vs 进行代码的编写,以下是我的代码.LogTextHe ...
- 怎么查找Jenkins的个人api token
程序中可变部分解释:其中server.build_job方法传入的参数channel为分渠道构建参数,也即jenkins job的参数,这个参数随不同的日常job不同是不同的,实际编写脚本的过程中这个 ...
- ELASTIC 动态修改配置API
工作中使用ELASTIC,我们常有需要修改的配置项,但有时又不想重启elastic,这时候就需要elasticsearch内置的修改集群配置API上场了. 这个API非常的简单. curl -XPUT ...
- 错误: No API token found for service account "default",
[root@kubernetes-master pods]# kubectl create -f mysql.yaml Error from server (ServerTimeout): error ...
- Yii2 的快速配置 api 服务 yii2-fast-api
yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...
- 6.1Hadoop属性Configuration配置API
6.1 Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值. (1) xml配置文件的格式 <?x ...
- http request 请求拦截器,有token值则配置上token值
// http request 请求拦截器,有token值则配置上token值 axios.interceptors.request.use( config => { if (token) { ...
- 使用配置 API配置注入(Container stand-alone API)
当使用API配置注时,它可以通过成员注入重写默认的注入规则: 使用注入成员(InjectionMember)时,如对属性注入可以用InjectionProperty等,可以通过指定名称来指定使用哪个具 ...
- API token for Github
1.如图所示:(前提是登录Github,进入Personal settings) 2,创建token 3,生成token 4. Last login: Mon Dec 5 20:24:18 on c ...
- SpringSecurityOAuth认证配置及Token的存储
⒈pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
随机推荐
- Shopify Theme 开发 —— 性能优化
一.概述 关于 Shopify Theme 的性能优化,通常有以下几点: 1.卸载未使用的应用程序 有些 app 会在 theme 里面插入一些代码,即使 app 未被使用,也可能会加载一些脚本文件, ...
- TeamViewer 9 和 10 即将停用 尝试切换到 Splashtop
TeamViewer 9 和 TeamViewer 10 将于2021 年 6 月 1 日到期停用.当这两个版本的 TeamViewer 到期时,用户将无法再远程访问其计算机和设备. 这意味着要继续使 ...
- C 语言编程 — 头文件
目录 文章目录 目录 前文列表 头文件 只引用一次头文件 有条件引用 global.h 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C ...
- Ubuntu Snap 简述
Ubuntu Snaps Ubuntu Snaps 是 Ubuntu 的母公司 Canonical 于 2016 年 4 月发布 Ubuntu16.04 LTS(LongTermSupport,长期支 ...
- pageoffice6 版本在线打开文件弹出网页对话框
用户在使用PageOffice在线编辑文档的操作过程中,如果遇到一些复杂的编辑需求,可能会需要弹出一个新的对话框,做相应的处理,可能是设置一些格式,就如同Office设置字体.段落等各种对话框,也可能 ...
- 一个IDEA界面如何同时打开多个项目
第一步:先导入其中一个工程 第二步:点击File->Project Structure 第三步:导入模块 最后点击Apply即可完成一个IDEA界面同时打开多个项目的需求.
- MVCC(多版本并发控制)详解
在 MySQL InnoDB存储引擎下,RC.RR 基于 MVCC 进行并发事务控制, MVCC 是基于"数据版本"对并发事务进行访问 用一个例子来解释一下,下面是一张事务执行流程 ...
- nginx+php,nginx+tomcat动静分离实战
1. 动静分离实战 1.1.1 nginx+tomcat 动静分离 主机 用途 10.0.0.63 tomcat服务器 10.0.0.64 nginx服务器 1.1.2 安装 java+tomcat环 ...
- ubuntu18.04开机grub引导界面、登录界面美化
1.引导界面美化 下载grub主题 https://www.gnome-look.org/browse/cat/109/order/latest/ https://www.pling.com/s/Gn ...
- NOIP模拟90(多校23)
T1 回文 解题思路 原来 \(n^3\) 可以过 500 ... 先枚举一下路径长度,对于同一路径长度点数最多是 \(n\) 个,我们可以接着枚举从 \((n,m)\) 出发的路径长度相同的点. 然 ...