背景介绍

当我自己写了一个库 mml_qae 时,我尝试使用

python setup.py sdist
twine upload dist/*

将其上传至pypi.org开源.但twine.exe报错:

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.1.0j 20 Nov 2018. See: https://github.com/urllib3/urllib3/issues/2168

常规解决方案

按照报错信息,找到了网页,但其上面的信息似乎对于解决问题的帮助并不大.可以通过

pip3 list

查找已安装包的版本,发现现在我所有的包(仅列举出与上传库有关的包)

dong 0.2.1.8
twine 4.0.2
requests 2.30.0
urllib3 1.25.11

但twine 4.0.2 要求 urllib3>=1.26.0 于是我

pip uninstall urllib3
pip install urllib3==1.26.0

哎?!又报错了?!这回它说:

dong 0.2.1.8 requires requests==2.22.0

这怎么事?哦,原来urllib3下载时附带的requests 是2.30.0,所以...

pip uninstall requests
pip install requests==2.22.0

擦,又报错

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behrequests 2.22.0 requires urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1, but you have urllib3 1.26.15 which is incompatible.

来来来咱看看这对urllib3包的版本要求哈,发现

twine 4.0.2 requires urllib3>=1.26.0
requests 2.22.0 requires urllib3!=1.25,!=1.25.1,<1.26,>=1.21.1

啊这.urllib3的包既需要大于等于1.26,又需要小于1.26?!

解决方案

先理理脉络:

dong 0.2.1.8 -> requests == 2.22.0 -> urllib3 !=1.25 , !=1.25.1 , <1.26 , >=1.21.1
twine 4.0.2 -> urllib3 >= 1.26.0 

啥意思?就urllib3包的版本冲突根本原因在dong包和twine包的冲突.怎么办?降版本呗!

查阅pypi官网发现dong包无论什么版本,都需要恰好2.22.0的requests.因此我们逐次降低twine版本:

pip uninstall twine
pip install twine==3.8.0
->报错(错误同上)
pip uninstall twine
pip install twine==2.0.0

此时再运行

twine upload dist/*

运行成功,开始输入Pypi账号和密码.上传成功!

pip下载

我上传的库名是 mml_qae ,但在twine成功上传后却发现

pip install mml_qae

报错.这是因为pip默认了国内的清华镜像.它每10分钟(有时会达到30分钟或更长)才刷新一次;而pypi官网也并非上传后立刻更新.耐心等待一段时间后进入pypi网站发现该库已被pypi接受.再过一段时间即可通过pip下载啦!

setup.py/pyproject.toml模板

setup.py模板:

import setuptools
setuptools.setup(name='包的名称',version='包的版本',description='包的简介',long_description='包的描述',author='作者',author_email='作者邮箱',url='https://www.python.org',packages=setuptools.find_packages(),) 

将中文部分替换成对应的内容即可.记得先运行

pip install setuptools

pyproject.toml源码:(来自原创)

[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [{ name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = ["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",
][project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues" 

Pypi上传自己库时报错的解决方案(巨详细)相关推荐

  1. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...

    本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 问题 A ...

  2. docker 镜像上传至hub时报错,提示:denied: requested access to the resource is denied

    问题原因 命名问题.docker 镜像上传时要求tag格式为为docker用户名/镜像名 解决方案 docker tag 镜像名 docker用户名/镜像名 注意,这边docker有一个很大很大的坑, ...

  3. ueditor编辑器上传文件超时报错

    文章来自:源码在线https://www.shengli.me/php/153.html php 超时等待时间太长: 解决: php.ini中的max_execution_time为0:(http请求 ...

  4. python pip安装第三方库老是报错_Python使用pip安装第三方库时报错的解决方案

    报错1: PermissionError: [WinError 5] 报错2: Command... failed with error code 1 in .. 以上两种报错,解决较为简单,主要是权 ...

  5. redmine上传大文件报错Request Entity Too Large

    产品部反馈redmine上传原型图时报错,Request Entity Too Large 检查redmine正确是正确的 系统是通过nginx做的反向代理,怀疑是nginx的问题. /etc/ngi ...

  6. 豌豆荚应用市场上传时提示“抽取icon失败”解决方案

    转载请注明出处 http://blog.csdn.net/u014513456/article/details/53646034 背景:APP开发完毕后,渠道包给运营同学,在上传豌豆荚市场时报错&qu ...

  7. 怎么在终端启用python_在终端启动Python时报错的解决方案

    最近,在终端启动Python时,报了一个错误: Failed calling sys.__interactivehook__ Traceback (most recent call last): Fi ...

  8. Python打包PyPI上传实践

    1.新建目录文件 2.requirement.txt文件内容输入requests==2.18.4 3.setup.py文件内容如下: from setuptools import find_packa ...

  9. Jfrog 搭建本地maven仓库以及上传Android库

    Jfrog 下载 安装包下载地址:Download Artifactory OSS | JFrog 如果是想下载之前的版本,可以点击上面的Get code source ,如果是最新版本,直接点下面的 ...

最新文章

  1. 如何获取元素在父级div里的位置_前端面试题--元素的BFC特性和实例
  2. 00后的简历有多野?!!
  3. GraphQL引入依赖maven仓库配置
  4. Python帮你识破双11的套路
  5. Excel表格生成sql语句
  6. 吴裕雄--天生自然 高等数学学习:两类曲线积分之间的联系
  7. 双赛道20支战队解题思路大公开,线上Poster Session等你来
  8. UVA1585 UVALive3354 Score【水题】
  9. 机器学习模型的理解(三)
  10. lammps教程:velocity命令三种使用方法
  11. 四叉树——图片应用实例
  12. vmware如何安装spoonwep2
  13. 网络流量分析netflow
  14. remix os显卡linux,Remix OS for PC 详细版的安装教程
  15. root 红米note5_怎么开启红米Note 5的ROOT权限
  16. Python语法基础 三
  17. 2.4G有源智能电子学生卡SI24R1 SI24R2E
  18. 多线程—如何下载网图
  19. iOS 使用符号断点定位警告约束警告-[LayoutConstraints] Unable to simultaneously satisfy constraints
  20. lg g5 android,模块化小王子 LG G5 获得 Android 7.0 更新

热门文章

  1. php factory interface,【PHP 設計模式大頭菜】工廠方法 Factory Method
  2. RS232 RS485 TO ETH TCP-Modbus 测试
  3. 动易SiteFactory CMS自动采集器 V2.5.1
  4. 20131129秒针系统算法面试
  5. Parser Generator 2 过往资料
  6. #ifdef,#else,#endif,#if用法详解(转)
  7. 提取地图中道路_国产地图神器在线PK谷歌地图,我的分析图有救拉~
  8. 北大青鸟python培训班
  9. matlab微分方程求法,matlab微分方程的求解的方法ppt课件
  10. 《LeetCode刷题》682. 棒球比赛(java篇)