找不到满足要求 <package> 的版本
- 2025-03-26 09:09:00
- admin 原创
- 15
问题描述:
我正在使用以下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
命令。
到目前为止,我必须手动安装six
、、,现在它抱怨需要。pytz
`nose`mock
有没有办法pip
自动安装所有需要的依赖项,这样我就不必逐个手动执行操作?
补充:顺便说一下,这只发生在 Ubuntu 12.04 中。在 Ubuntu 14.04 中,pip install
应用于requirements.txt
文件的命令可以正常工作。
解决方案 1:
虽然它并没有真正回答这个特定问题。其他人也因这个错误而收到了相同的错误消息。
对于那些像我一样最初忘记的人来说-r
:使用pip install -r requirements.txt
对于-r
命令至关重要。
原答案:
https://stackoverflow.com/a/42876654/10093070
解决方案 2:
我已经安装了python3,但我的python/usr/bin/python
仍然是旧的2.7版本
这有效(<pkg>
就pyserial
我而言):
python3 -m pip install <pkg>
解决方案 3:
这种方法(将所有依赖项放在一个目录中,而不是从索引中下载)仅在目录包含所有包时才有效。因此,目录不仅应包含所有依赖项,还应包含这些依赖项所依赖的所有包(例如six
,pytz
等)。
因此,您应该手动将它们包含在内requirements.txt
(以便第一步明确下载它们)或者您应该使用 PyPI 安装所有包,然后pip freeze > requirements.txt
存储所需的所有包的列表。
解决方案 4:
只是提醒那些在 Google 上搜索此错误并来到这里的人。
假设我收到这个错误:
$ python3 example.py
Traceback (most recent call last):
File "example.py", line 7, in <module>
import aalib
ModuleNotFoundError: No module named 'aalib'
既然它提到了aalib
,我想尝试一下aalib
:
$ python3.8 -m pip install aalib
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
ERROR: No matching distribution found for aalib
但实际上它的包名称是错误的,请确保pip search
(撰写本文时服务已禁用),或使用谷歌,或在pypi 网站上搜索以获取准确的包名称:
然后安装成功:
$ python3.8 -m pip install python-aalib
Collecting python-aalib
Downloading python-aalib-0.3.2.tar.gz (14 kB)
...
如上所述pip --help
:
$ python3.8 -m pip --help
...
-v, --verbose Give more output. Option is additive, and can be used up to 3 times.
为了有系统地找出根本原因而不是依靠运气,您可以附加命令-vvv
选项pip
来查看详细信息,例如:
$ python3.8 -u -m pip install aalib -vvv
User install by explicit request
Created temporary directory: /tmp/pip-ephem-wheel-cache-b3ghm9eb
Created temporary directory: /tmp/pip-req-tracker-ygwnj94r
Initialized build tracking at /tmp/pip-req-tracker-ygwnj94r
Created build tracker: /tmp/pip-req-tracker-ygwnj94r
Entered build tracker: /tmp/pip-req-tracker-ygwnj94r
Created temporary directory: /tmp/pip-install-jfurrdbb
1 location(s) to search for versions of aalib:
* https://pypi.org/simple/aalib/
Fetching project page and analyzing links: https://pypi.org/simple/aalib/
Getting page https://pypi.org/simple/aalib/
Found index url https://pypi.org/simple
Getting credentials from keyring for https://pypi.org/simple
Getting credentials from keyring for pypi.org
Looking up "https://pypi.org/simple/aalib/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/aalib/ HTTP/1.1" 404 13
[hole] Status code 404 not in (200, 203, 300, 301)
Could not fetch URL https://pypi.org/simple/aalib/: 404 Client Error: Not Found for url: https://pypi.org/simple/aalib/ - skipping
Given no hashes to check 0 links for project 'aalib': discarding no candidates
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
Cleaning up...
Removed build tracker: '/tmp/pip-req-tracker-ygwnj94r'
ERROR: No matching distribution found for aalib
Exception information:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 186, in _main
status = self.run(options, args)
File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 357, in run
resolver.resolve(requirement_set)
File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 177, in resolve
discovered_reqs.extend(self._resolve_one(requirement_set, req))
File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 281, in _get_abstract_dist_for
req.populate_link(self.finder, upgrade_allowed, require_hashes)
File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 249, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 926, in find_requirement
raise DistributionNotFound(
pip._internal.exceptions.DistributionNotFound: No matching distribution found for aalib
从上面的日志中,可以明显看出 URL https://pypi.org/simple/aalib/
404 未找到。然后你可以猜测导致 404 的可能原因,即错误的包名称。另外,我可以修改 pip 模块的相关 python 文件,以便使用上面的日志进一步调试。要编辑.whl
文件,你可以使用wheel
命令unpack
和pack
。
解决方案 5:
我找到了一种仅用一行命令即可修复此问题的方法。您需要知道软件包的版本(只需搜索 PACKAGE 版本)。
命令:
python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION
解决方案 6:
并非总是如此,但在某些情况下,包已经存在。例如 - getpass。它没有被“pip list”列出,但可以导入和使用:
如果我尝试 pip install getpass 我会收到以下错误:“找不到满足要求 getpass 的版本”
解决方案 7:
尝试使用以下命令通过 powershell 安装 flask。
pip install --isolated Flask
这将允许安装避免环境变量和用户配置。
解决方案 8:
如果你在工作场所遇到这个问题。这可能是你的解决方案。
pip install -U <package_name> --user --proxy=<your proxy>
解决方案 9:
Pip 从 pypi.org 安装。
pip install -U -i https://pypi.org/simple package
解决方案 10:
由于这是一个相当烦人的问题,可能会让初学者困扰很长一段时间,所以我在这里写了一个完整的公会。
如果您正在运行
pip install PACKAGE
或python -m pip install PACKAGE
,并且no matching version found
报告了错误,请按以下方法解决问题。
在浏览器上搜索你的包,例如我的包是
pycypto
,我在这里搜索pycypto pypi
找到你的包,打开 pypi 上的链接,点击下载文件
打开一个python shell,导入任何你安装的包,例如我之前安装了Pillow。
>>> import PIL
>>> PIL.__path__
['/Applications/MAMP/htdocs/canvas/src/zzd/env/lib/python3.7/site-packages/PIL']
PACKAGE.__path__
函数将为您提供side packages
所有包应进入的路径。
另外:如果您不知道之前安装了哪些软件包,请运行pip list
以获取已安装软件包的列表。
获取路径后,打开 shell,cd 到该路径
cd /Applications/MAMP/htdocs/canvas/src/zzd/env/lib/python3.7/site-packages/
open
解压下载的文件,将其拖入
site-packages
。cd 进入下载的目录,运行
setup.py
安装
cd pycrypto-2.6.1
python setup.py install
然后您应该能够在 python 中导入和使用该包。
解决方案 11:
一个可能的错误,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轻松阅读
解决方案 12:
我在 Windows 10 上的 anaconda (python 3.7) 中安装时出现此错误awscli
。在进行故障排除时,我转到答案https://stackoverflow.com/a/49991357/6862405,然后转到https://stackoverflow.com/a/54582701/6862405 。最后发现我需要安装库PyOpenSSL
、cryptography
、和。安装这些库后(使用简单命令),我就可以安装 了。enum34
`idnaipaddress
pip install`awscli
解决方案 13:
以上答案对我都不起作用。经过几个小时的调试,我发现了这一点:
您尝试从上游安装的软件包可能未针对您的系统架构或目标 Python 版本进行分发。
例如:aarch64
如果您正在使用运行Python 3.12
,上游软件包索引可能仅提供amd64
最高 的架构Python 3.11
。因此您将看到Could not find a version that satisfies the requirement <package>
错误。
请检查项目的兼容性矩阵(如果有)或Download files
部分PyPI
。
解决方案 14:
我在安装时遇到问题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
解决方案 15:
在 MacOs 上,在略有不同的情况下出现相同的错误。显然,setuptools 版本超过 45 可能会暴露一些问题,这个命令帮助我解决了这个问题:pip3 install setuptools==45
解决方案 16:
如果包是本地的,请不要忘记相对路径。例如
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>
解决方案 17:
对于那些仍然对上述错误感到困惑的人,请尝试以下标记并重新运行:
--trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org
例如:
pip 安装 jupyter --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org
解决方案 18:
虽然这个答案并不直接适合这里的情况,但我认为值得一提的是,以防其他人在从多个文件安装时遇到相关错误后来到这里requirements.txt
。
我的情况是,我忘记了我们的一个requirements.txt
文件有一个-i <index_url>
标志,指向我们存储内部 Python 包的索引。我们把这个文件称为requirements.customindex.txt
。
ERROR: No matching distribution found for <package>
在执行时引发
$ pip install -r requirements.txt -r requirements.lint.txt -r requirements.customindex.txt
这导致pip
尝试从自定义索引安装所有包,但自然无法从那里找到它们。
当做
$ pip install -r requirements.txt -r requirements.lint.txt
$ pip install -r requirements.customindex.txt
一切正常。