找不到满足要求 <package> 的版本

2025-03-26 09:09:00
admin
原创
14
摘要:问题描述:我正在使用以下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>...

问题描述:

我正在使用以下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:

这种方法(将所有依赖项放在一个目录中,而不是从索引中下载)仅在目录包含所有包时才有效。因此,目录不仅应包含所有依赖项,还应包含这些依赖项所依赖的所有包(例如sixpytz等)。

因此,您应该手动将它们包含在内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命令unpackpack

解决方案 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 PACKAGEpython -m pip install PACKAGE,并且no matching version found报告了错误,请按以下方法解决问题。

  1. 在浏览器上搜索你的包,例如我的包是pycypto,我在这里搜索pycypto pypi

  2. 找到你的包,打开 pypi 上的链接,点击下载文件

  3. 打开一个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以获取已安装软件包的列表。

  1. 获取路径后,打开 shell,cd 到该路径

cd /Applications/MAMP/htdocs/canvas/src/zzd/env/lib/python3.7/site-packages/
open
  1. 解压下载的文件,将其拖入site-packages

  2. 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 。最后发现我需要安装库PyOpenSSLcryptography、和。安装这些库后(使用简单命令),我就可以安装 了。enum34`idnaipaddresspip 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

一切正常。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2079  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1459  
  建筑行业正处于数字化转型的关键时期,建筑产品生命周期管理(PLM)系统的实施对于提升项目效率、质量和协同性至关重要。特别是在 2025 年,基于建筑信息模型(BIM)的项目进度优化工具成为众多建筑企业关注的焦点。这些工具不仅能够整合项目全生命周期的数据,还能通过精准的分析和模拟,为项目进度管理提供强大支持。BIM 与建...
plm是什么软件   0  
  PLM系统开发的重要性与现状PLM(产品生命周期管理)系统在现代企业的产品研发、生产与管理过程中扮演着至关重要的角色。它贯穿产品从概念设计到退役的整个生命周期,整合了产品数据、流程以及人员等多方面的资源,极大地提高了企业的协同效率和创新能力。通过PLM系统,企业能够实现产品信息的集中管理与共享,不同部门之间可以实时获取...
国产plm软件   0  
  PLM(产品生命周期管理)系统在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和技术的飞速发展,企业对PLM系统的迭代周期优化需求日益迫切。2025年敏捷认证对项目管理提出了新的要求,其中燃尽图作为一种强大的可视化工具,在PLM系统迭代周期优化中有着广泛且重要的应用。深入探讨这些应用,对于提升企业的项...
plm系统主要干什么的   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用