3

我已经多次遇到这个问题。基本上,在工作中,我们在 Windows 上使用旧版本的 python (2.5),并且通常当我这样做时,例如pip install zope.interfacepip 总是下载最新版本的包,无论我的 python 版本是否支持该包。因此,上面的示例将下载4.0.1,尽管 PKG-INFO 没有将 python 2.5 列为受支持的版本,因此我收到安装错误

  File "C:\Users\jamaam\build\zope.interface\setup.py", line 42
except DistutilsPlatformError as e:

我希望 pip 更智能并安装我的 python 版本(在本例中为3.8.0)支持的最高版本的包,并可能警告这个包不是最新的,而我不必搜索互联网在我的环境中手动查找可安装版本。

反正有这样做吗?

这是PKG-INFO的一些内容,显然没有列出python 2.5

381 Classifier: Operating System :: OS Independent
382 Classifier: Programming Language :: Python :: 2.6
383 Classifier: Programming Language :: Python :: 2.7
384 Classifier: Programming Language :: Python :: 3
385 Classifier: Programming Language :: Python :: 3.2
386 Classifier: Topic :: Software Development :: Libraries :: Python Modules
4

1 回答 1

1

不; 不存在进行此类调用的元数据,因此没有任何东西pip(或任何其他工具)可以用来确定哪个版本的包可以与您的 python 版本一起使用。

您唯一的选择是在安装时使用版本引脚:

pip install -I zope.interface==3.8.0

注意-I那里的开关;由于您已经尝试安装最新版本,您可能需要忽略任何已安装的版本以强制降级。

请注意,Classifier: Programming Language :: Python :: *此任务不能依赖 Trove python 版本分类器 ( );如果开发人员记得这样做,则它们由开发人员设置,但以后无法更新以指示与新 python 版本的兼容性。它们应该被视为帮助优化对 PyPI 和其他包索引的搜索的一种方式,而不是安装程序使用的元数据。

于 2012-08-13T08:46:43.637 回答