技术背景

在许久之前写的一篇博客中,我们介绍过使用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的更多相关文章

  1. 微信企业号C#开发配置API

    微信开发第一步 :   配置API,实现接收消息服务配置 1.在下图界面先填好内容,事件消息处理可自行选择,我这里是没处理的 2.第二步: 使用vs 进行代码的编写,以下是我的代码.LogTextHe ...

  2. 怎么查找Jenkins的个人api token

    程序中可变部分解释:其中server.build_job方法传入的参数channel为分渠道构建参数,也即jenkins job的参数,这个参数随不同的日常job不同是不同的,实际编写脚本的过程中这个 ...

  3. ELASTIC 动态修改配置API

    工作中使用ELASTIC,我们常有需要修改的配置项,但有时又不想重启elastic,这时候就需要elasticsearch内置的修改集群配置API上场了. 这个API非常的简单. curl -XPUT ...

  4. 错误: No API token found for service account "default",

    [root@kubernetes-master pods]# kubectl create -f mysql.yaml Error from server (ServerTimeout): error ...

  5. Yii2 的快速配置 api 服务 yii2-fast-api

    yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...

  6. 6.1Hadoop属性Configuration配置API

    6.1  Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值. (1)   xml配置文件的格式 <?x ...

  7. http request 请求拦截器,有token值则配置上token值

    // http request 请求拦截器,有token值则配置上token值 axios.interceptors.request.use( config => { if (token) { ...

  8. 使用配置 API配置注入(Container stand-alone API)

    当使用API配置注时,它可以通过成员注入重写默认的注入规则: 使用注入成员(InjectionMember)时,如对属性注入可以用InjectionProperty等,可以通过指定名称来指定使用哪个具 ...

  9. API token for Github

    1.如图所示:(前提是登录Github,进入Personal settings) 2,创建token 3,生成token 4. Last login: Mon Dec  5 20:24:18 on c ...

  10. SpringSecurityOAuth认证配置及Token的存储

    ⒈pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

随机推荐

  1. Shopify Theme 开发 —— 性能优化

    一.概述 关于 Shopify Theme 的性能优化,通常有以下几点: 1.卸载未使用的应用程序 有些 app 会在 theme 里面插入一些代码,即使 app 未被使用,也可能会加载一些脚本文件, ...

  2. TeamViewer 9 和 10 即将停用 尝试切换到 Splashtop

    TeamViewer 9 和 TeamViewer 10 将于2021 年 6 月 1 日到期停用.当这两个版本的 TeamViewer 到期时,用户将无法再远程访问其计算机和设备. 这意味着要继续使 ...

  3. C 语言编程 — 头文件

    目录 文章目录 目录 前文列表 头文件 只引用一次头文件 有条件引用 global.h 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C ...

  4. Ubuntu Snap 简述

    Ubuntu Snaps Ubuntu Snaps 是 Ubuntu 的母公司 Canonical 于 2016 年 4 月发布 Ubuntu16.04 LTS(LongTermSupport,长期支 ...

  5. pageoffice6 版本在线打开文件弹出网页对话框

    用户在使用PageOffice在线编辑文档的操作过程中,如果遇到一些复杂的编辑需求,可能会需要弹出一个新的对话框,做相应的处理,可能是设置一些格式,就如同Office设置字体.段落等各种对话框,也可能 ...

  6. 一个IDEA界面如何同时打开多个项目

    第一步:先导入其中一个工程 第二步:点击File->Project Structure 第三步:导入模块 最后点击Apply即可完成一个IDEA界面同时打开多个项目的需求.

  7. MVCC(多版本并发控制)详解

    在 MySQL InnoDB存储引擎下,RC.RR 基于 MVCC 进行并发事务控制, MVCC 是基于"数据版本"对并发事务进行访问 用一个例子来解释一下,下面是一张事务执行流程 ...

  8. 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环 ...

  9. ubuntu18.04开机grub引导界面、登录界面美化

    1.引导界面美化 下载grub主题 https://www.gnome-look.org/browse/cat/109/order/latest/ https://www.pling.com/s/Gn ...

  10. NOIP模拟90(多校23)

    T1 回文 解题思路 原来 \(n^3\) 可以过 500 ... 先枚举一下路径长度,对于同一路径长度点数最多是 \(n\) 个,我们可以接着枚举从 \((n,m)\) 出发的路径长度相同的点. 然 ...