无法找到满足需求的版本 <package>

324

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

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

第一个下载包,第二个安装它们。

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

  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))

我手动修复它,使用以下方法:

pip install --user <package>

然后再次运行第二个pip install命令即可。

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

到目前为止,我不得不手动安装了sixpytznose,现在它又需要安装mock了。

有没有一种方法可以告诉pip自动安装所有需要的依赖项,以便我不必一个一个手动安装?

补充:顺便说一下,这只发生在Ubuntu 12.04中。在Ubuntu 14.04中,应用于requirements.txt文件的pip install命令可以正常工作。


4
有时你的 Django 项目可能依赖于本地的 brew 包。请仔细检查是否已安装这些包! - James111
我曾经遇到过同样的问题,使用“python -m pip install flask”命令成功安装了它。 - Derrick
你检查过你的环境使用的 Python 版本是否与项目的 Python 要求匹配了吗?如果没有,似乎会出现这个错误。例如,我用 conda create -n my_anatome_env python=3.9; conda activate my_anatome_env 解决了这个问题,然后再进行 pip 安装。 - Charlie Parker
19个回答

3

从pypi.org安装Pip。

pip install -U -i  https://pypi.org/simple package

1
最好添加一行说明标志。-U,--upgrade:将所有指定的软件包升级到最新可用版本。而 -i,--index-url <url>:Python软件包索引的基本URL(默认为https://pypi.org/simple)。 - Rajesh Swarnkar

3

可能出现的错误,pip包要求使用Python解释器,但您未使用该解释器。

我遇到了同样的问题,只有在我从Docker镜像(或Dockerfile)中运行命令时才会出现。几个小时后,我终于通过更新我的Python解释器来解决了这个问题。指出我的pip包需要Python>=3.7,但我的Docker镜像正在使用Python 3.6。

提示:要检查是否存在类似的问题,只需检查pip包要求和您的Python版本即可。私有pip包解释器要求写在setup.py或setup.cfg中。公共pip包通常托管在pypi.org上,在那里您可以使用浏览器检查解释器要求。要检查Python解释器版本,只需在控制台中编写例如python --version或python3 --version即可。

一般问题描述

正如其他答案所指出的那样,还可能存在您未满足的其他要求,这就是为什么pip找不到适合您的软件包版本的原因。所有要求都写在pip包文档中,并且可以从https://pypi.org/project/graphene-django/your-package中轻松阅读。


2

2
当我失去了网络连接时,出现了这个错误。

1
我在安装pandas-1.4.3时遇到了问题,问题出在我的Python补丁版本上。pandas-1.4.3需要Python版本3.8.13,并且无法与3.8.9一起使用。
python install -r requirements.txt # or pip install pandas==1.4.3
# -> Could not find a version that satisfies...
conda activate my_project # creates a virtual env for a new python version
conda install python=3.8.13 # installing the new python version
python --version # displays 3.8.13
pip install -r python/requirements.txt
# -> pandas installed as expected

0
如果软件包是本地的,请不要错过相对路径。例如。
pip install ./<pkg>

最终在我的情况下起作用了,而

pip install <pkg>

产生:

ERROR: Could not find a version that satisfies the requirement <pkg> (from versions: none)
ERROR: No matching distribution found for <pkg>

0

在MacOS上,稍微不同的情况下出现了相同的错误。 显然,45版本之后的setuptools可能会暴露一些问题,而这个命令让我绕过了这个问题:pip3 install setuptools==45


0
以上的答案都对我没有用。经过几个小时的调试,我找到了解决方法:
您尝试从上游安装的软件包可能不适用于您系统的架构或目标Python版本。
例如:如果您正在运行的是带有Python 3.12的aarch64架构,那么上游软件包索引可能只提供amd64架构,最高支持Python 3.11。因此,您会看到“找不到满足要求的版本<package>”的错误。
请检查项目的兼容性矩阵(如果有的话)或PyPI中的“下载文件”部分。

-3

如果你在谷歌上找到了其他版本的软件包,可以尝试使用它。 例如,我在使用glob时遇到了错误,于是我改用了glob2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接