本文介绍了找不到满足要求< package>的版本.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下requirements.txt文件在Ubuntu 12.04中安装多个Python软件包:

I'm installing several Python packages in Ubuntu 12.04 using the following requirements.txt file:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

和这两个命令:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(第一个下载软件包,第二个安装软件包).

(the first one downloads the packages and the second one installs them).

该过程经常因错误而停止:

The process is frequently stopped with the error:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

我可以通过以下方式手动修复:

which I fix manually with:

pip install --user <package>

,然后再次运行第二个pip install命令.

and then run the second pip install command again.

但这仅适用于那个特定程序包.当我再次运行第二个pip install命令时,该过程现在停止,并抱怨另一个必需软件包,我需要再次重复该过程,即:手动安装新的必需软件包(使用上面的命令) ),然后运行第二个pip install命令.

But that only works for that particular package. When I run the second pip install command again, the process is stopped now complaining about another required package and I need to repeat the process again, ie: install the new required package manually (with the command above) and then run the second pip install command.

到目前为止,我不得不手动安装sixpytznose,现在它抱怨需要mock.

So far I've had to manually install six, pytz, nose, and now it's complaining about needing mock.

是否有一种方法可以告诉pip自动安装所有所需的依赖项,所以我不必一个个地手动进行操作?

Is there a way to tell pip to automatically install all needed dependencies so I don't have to do it manually one by one?

添加:仅在Ubuntu 12.04 BTW中发生.在Ubuntu 14.04中,应用于requirements.txt文件的pip install命令可以正常工作.

Add: This only happens in Ubuntu 12.04 BTW. In Ubuntu 14.04 the pip install commands applied on the requirements.txt file work without issues.

推荐答案

此方法(在目录中包含所有依赖项,而不从索引中下载)仅在目录包含所有软件包时才有效.因此,该目录应包含所有依赖关系,还应包含这些依赖关系所依赖的所有程序包(例如sixpytz等).

This approach (having all dependencies in a directory and not downloading from an index) only works when the directory contains all packages. The directory should therefore contain all dependencies but also all packages that those dependencies depend on (e.g., six, pytz etc).

因此,您应该手动将它们包含在requirements.txt中(以便第一步明确下载它们),或者应该使用PyPI安装所有软件包,然后使用pip freeze > requirements.txt安装所有所需软件包的列表.

You should therefore manually include these in requirements.txt (so that the first step downloads them explicitly) or you should install all packages using PyPI and then pip freeze > requirements.txt to store the list of all packages needed.

这篇关于找不到满足要求&lt; package&gt;的版本.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 05:41