python - 为什么 Pip 声称 Python 的版本不在给定范围内?
问题描述
我正在使用 Python 3.8.7 和最新版本的 Pip v21.0.1。我编写了一个包含以下 Python 版本约束的包:
python_requires='>=3.6, <3.9',
当我尝试安装软件包时,Pip 拒绝并打印以下错误:
ERROR: Package 'my-package' requires a different Python: 3.8.7 not in '<3.9,>=3.6'
在安装具有类似版本约束的其他软件包时,我看到了类似的错误:
ERROR: Package 'my-other-package' requires a different Python: 3.8.7 not in '!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,<3.9,>=2.7'
显然 Python 3.8.7大于3.6 小于 3.9,那么为什么 Pip 声称需要不同版本的 Python?
一些调查表明这可能是一个不准确的错误消息。我已经运行了一个实验,使用具有以下依赖关系的包:
- package-a 需要 Python >= 3.6,并且依赖于 package-b;
- package-b 需要 Python >= 3.6 和 < 3.9。
我发现在使用 Python 3.9 安装 package-a 时,我收到以下错误:
ERROR: Package 'package-a' requires a different Python: 3.9.0 not in '>=3.6'
所以基本上,package-a 不能与 Python 3.9 一起安装,因为 package-b 不适用于 Python 3.9;然而,Pip 错误地指出package-a需要一个“不同的”Python,然后错误地打印出 package-a 的版本说明符,而不是 package-b。
我将继续调查,但这可能是 Pip 本身的错误。
解决方案
推荐阅读
- ios - UINavigationBar.appearance().tintColor 与 UIBarButtonItem foregroundColor
- python - 在子列表的开头和结尾创建包含元组的列表列表
- html - 在 Observable 数组中嵌套 *ngFor
- angular - 如何使用 web-ext-types 来避免错误 TS2304
- https - 为安全的 Nifi 服务器设置 authorizers.xml
- scala - Spark:对分组数据的“计数”是一种转换还是一种操作?
- java - Spring Data JPA:如何更新具有不同值的多个列
- html - 检查日期是否正确 + 正则表达式 Angular4
- reactjs - 在 package.json 和 webpack.config 中设置代理有什么区别?
- c# - oracle更改变量类型