我多次遇到过这个问题。基本上,在工作中我们在Windows上使用旧版本的python(2.5),并且通常当我执行pip install zope.interface
时,pip总是下载最新版本的软件包,无论我的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),可能会警告这个软件包不是最新的,没有我必须搜索interweb以手动在我的环境中找到可安装的版本。
有没有这样做?
以下是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
答案 0 :(得分:1)
没有;没有元数据可以进行这样的调用,因此没有pip
(或任何其他工具)可以用来确定哪个版本的软件包适用于您的python版本。
您唯一的选择是在安装时使用版本引脚:
pip install -I zope.interface==3.8.0
注意那里的-I
开关;由于您已经尝试安装最新版本,因此可能需要忽略任何已安装的版本以强制降级。
请注意,此任务不能依赖Trove python版本分类器(Classifier: Programming Language :: Python :: *
);它们是由开发人员设置的,如果他们记得这样做,但是稍后无法更新以表明与新python版本的兼容性。它们应该被视为一种帮助优化PyPI和其他包索引的搜索的方法,而不是安装程序使用的元数据。