码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用python setup.py报错:Upload failed (403) / Upload failed (400)


    当前报错的环境

    • Python 3.9.19
    • twine==1.15.0

    本地~/.pypirc已正确配置了用户名和密码,用在pypi.org注册:

    [pypi]
      username = skylerhu
      password = ${password}
    
    • 1
    • 2
    • 3

    执行 python setup.py sdist upload -r pypi 打包上传到仓库报错。

    在不久之前同样的环境,执行是成功过的。

    错误1

    执行 python setup.py sdist upload -r pypi

    Submitting dist/py-enum-1.1.0.tar.gz to https://upload.pypi.org/legacy/
    Upload failed (403): 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
    error: Upload failed (403): 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
    
    • 1
    • 2
    • 3

    提示用户名、密码的鉴权方式已经不在支持,说是需要创建API Tokens上传包。

    根据提示,到用户管理页面 https://pypi.org/manage/account/ 找到配置,按照提示新增了API token.
    在这里插入图片描述
    需要注意的是创建Token后记得复制保存Token值,一般都是以pypi-开头,复制值后按照提示配置本机.pypirc如下所示,其中__token__是固定写死的:

    [pypi]
      username = __token__
      password = pypi-xxxx
    
    • 1
    • 2
    • 3

    参考: https://pypi.org/help/#apitoken

    错误2

    再次执行报错:

    Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest.
    error: Upload failed (400): Invalid value for blake2_256_digest. Error: Use a valid, hex-encoded, BLAKE2 message digest.
    
    • 1
    • 2

    原因是distutils (python setup.py工具)已弃用,不应再使用,请使用twine将软件上传到 PyPI。

    参考:

    1. https://bugs.python.org/issue45590
    2. https://github.com/pypa/distutils/issues/25
    3. https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html

    错误3

    改用twine执行 twine upload -r pypi dist/py-enum-xxx.tar.gz 还是报错:

    Uploading distributions to https://upload.pypi.org/legacy/
    Traceback (most recent call last):
      File "./py-enum/.env3.9/bin/twine", line 8, in <module>
        sys.exit(main())
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/__main__.py", line 28, in main
        return dispatch(sys.argv[1:])
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/cli.py", line 77, in dispatch
        return main(args.args)
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/commands/upload.py", line 137, in main
        return upload(upload_settings, args.dists)
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/commands/upload.py", line 65, in upload
        repository = upload_settings.create_repository()
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/settings.py", line 288, in create_repository
        repo = repository.Repository(
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/repository.py", line 59, in __init__
        self.session.mount(scheme, self._make_adapter_with_retries())
      File "./py-enum/.env3.9/lib/python3.9/site-packages/twine/repository.py", line 65, in _make_adapter_with_retries
        retry = util.Retry(
    TypeError: __init__() got an unexpected keyword argument 'method_whitelist'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    查找一些资料后,通过pip install -U twine 解决。

    执行成功的版本是:twine==5.0.0

    解决以上所有错误后,终于成功将包上传到了仓库。

  • 相关阅读:
    JAVA微服务场景下分布式日志收集排查问题实战
    Unity 2018发布在iOS 16.3偶尔出现画面不动的问题
    SCRUM敏捷产品负责人(CSPO)认证培训课程
    【python】使用python将多个视频合并、延长视频的时间
    My-cmsms 靶机
    Shell基础语法——变量、数组、字符串
    嵌入式养成计划-51----ARM--ARM汇编指令--内存读写指令--程序状态寄存器传输指令--软中断指令--混合编程
    DES & 3DES 简介 以及 C# 和 js 实现【加密知多少系列】
    UBOOT编译--- UBOOT编译过程目标依赖分析(八)
    iOS开发Swift-4-IBAction,group,音乐播放器-木琴App
  • 原文地址:https://blog.csdn.net/kuailebeihun/article/details/138201331
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号