【问题标题】:Could not find a version that satisfies the requirement <package>找不到满足要求的版本 <package>
【发布时间】:2015-11-24 23:09:01
【问题描述】:

我正在使用以下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 命令时,该过程现在停止并抱怨 another 所需的包,我需要再次重复该过程,即:手动安装新的所需包(使用上面的命令) 然后运行第二个pip install 命令。

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

有没有办法告诉pip 自动安装所有所需的依赖项,这样我就不必一个一个手动完成?

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

【问题讨论】:

  • 有时你的 Django 项目可能依赖于本地的 brew 包。仔细检查你是否安装了这些!
  • 我也遇到了同样的问题,使用 'python -m pip install flask' 我可以安装它
  • 您是否检查过您的环境使用的python 版本是否与项目的python 要求相匹配?如果不是,您似乎会收到此错误。例如,我用conda create -n my_anatome_env python=3.9; conda activate my_anatome_env 修复了它,然后进行 pip 安装。

标签: python pip requirements.txt


【解决方案1】:

我已经安装了python3,但我在/usr/bin/python 中的python 仍然是旧的2.7 版本

这行得通(在我的情况下,&lt;pkg&gt;pyserial):

python3 -m pip install <pkg>

【讨论】:

  • 当在 setuptools 中有 python_requires='&gt;=3.0' 作为要求时会发生这种情况
  • 检查这是否适用于您的一种简单方法是查看which pythonwhich pip 之间是否存在目录不匹配
  • pip3 替换pip 也对我有用
  • 希望错误消息告诉我这是由于 python 版本不匹配。为什么不明确说出来?
【解决方案2】:

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

因此,您应该手动将这些包含在 requirements.txt 中(以便第一步明确下载它们),或者您应该使用 PyPI 安装所有包,然后使用 pip freeze &gt; requirements.txt 来存储所需的所有包的列表。

【讨论】:

  • 因此,找出要求的所有的唯一方法是freeze工作设置中已安装的软件包,然后将其中的所有内容添加到@987654327 @文件?
  • @Gabriel:目前是的,因为许多 Python 包是通过运行包含所需依赖项的 setup.py 文件来安装的。一旦 Python 包成为轮子文件 (pythonwheels.com),这应该会变得更好,它允许您收集所有需要的包的列表,而无需在 setup.py 文件中执行任意代码。
  • 感谢西蒙的解释。如果您不介意,还有一件事:为什么这在 Ubuntu 14.04 中没有发生,但在 Ubuntu 12.04 中却发生了?
  • @Gabriel:我不确定——根据我的经验,pip 总是在找不到要安装的软件包时中止。话虽如此,pip 正在积极开发中,所以可能是你有一个我没有使用过的版本。
  • @SimeonVisser,“[wheels] 允许您在不执行任意代码的情况下收集所有需要的包的列表”,有趣,介意分享如何实际做到这一点(现在)?
【解决方案3】:

虽然它并没有真正回答这个特定的问题。其他人收到与此错误相同的错误消息。

对于那些像我一样忘记-r的人:使用pip install -r requirements.txt-r对于命令是必不可少的。

原答案:

https://stackoverflow.com/a/42876654/10093070

【讨论】:

  • 希望错误消息告诉我这是由于 python 版本不匹配造成的。为什么不明确说出来?
【解决方案4】:

经过 2 小时的搜索,我找到了一种只需一行命令即可修复它的方法。您需要知道包的版本(只需搜索包版本)。

命令:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION

【讨论】:

    【解决方案5】:

    只是提醒谁谷歌这个错误并来到这里。

    假设我收到此错误:

    $ 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(撰写本文时为service disabled),或者google,或者搜索pypi site得到准确的包名

    然后安装成功:

    $ 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.
    

    要想有一个系统的方法找出根本原因而不是靠运气,你可以在pip命令中附加-vvv选项来查看详细信息,例如:

    $ 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文件,可以use wheel command to unpack and pack

    【讨论】:

    • 是的......我被困了 2 个小时,因为我输入了错误的包名。感谢您的提示。
    【解决方案6】:

    以下命令对我有用 -

    python -m pip install flask
    

    【讨论】:

      【解决方案7】:

      并非总是如此,但在某些情况下,包已经存在。例如-getpass。没有被“pip list”列出,但可以导入使用:

      如果我尝试 pip install getpass 我收到以下错误: "找不到满足 getpass 要求的版本"

      【讨论】:

        【解决方案8】:

        尝试使用以下命令通过 powershell 安装烧瓶。

        pip install --isolated Flask
        

        这将允许安装避免环境变量和用户配置。

        【讨论】:

          【解决方案9】:

          如果您在工作场所遇到此问题。这可能是您的解决方案。

          pip install -U <package_name> --user --proxy=<your proxy>
          

          【讨论】:

            【解决方案10】:

            从 pypi.org 进行 Pip 安装。

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

            【讨论】:

              【解决方案11】:

              当我失去互联网连接时,我遇到了这个错误。

              【讨论】:

                【解决方案12】:

                我在 anaconda (python 3.7) 中的 Windows 10 上安装 awscli 时遇到此错误。 在进行故障排除时,我去了答案https://stackoverflow.com/a/49991357/6862405,然后去了https://stackoverflow.com/a/54582701/6862405。最后发现需要安装库PyOpenSSLcryptographyenum34idnaipaddress。安装这些之后(只需使用pip install 命令),我就可以安装awscli

                【讨论】:

                  【解决方案13】:

                  一个可能的错误,pip 包需要你没有使用的 python 解释器。

                  我遇到了同样的问题,它仅在我从 Docker 映像(或 Dockerfile)运行命令时发生。最后几个小时后,我设法通过更新我的 python 解释器来解决它。指出我的 pip-package 需要 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 轻松阅读

                  【讨论】:

                    【解决方案14】:

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

                    【讨论】:

                      【解决方案15】:

                      如果您发现该软件包的其他版本可用,请在 google 中搜索 例如使用它 我在使用 glob 时遇到错误,所以我改用 glob2

                      【讨论】:

                        【解决方案16】:

                        使用命令提示符,然后选择以管理员身份运行。

                        升级pip版本

                        要升级 PIP,请键入此命令,然后按 Enter:

                        python.exe -m pip install --upgrade pip
                        

                        返回python路径C:\Users\Jack\AppData\Local\Programs\Python\Python37\Scripts

                        输入 jupyter notebook

                        您将被重定向到http://localhost:8888/undefined/tree Jupyter 主页

                        希望对你有帮助!!!!!!!!!!!!

                        【讨论】:

                        • 这跟jupyter有什么关系??
                        • 升级pip如何解决依赖关系?它需要调用目录中的依赖项。
                        猜你喜欢
                        • 1970-01-01
                        • 2023-03-20
                        • 2021-12-25
                        • 2018-10-13
                        • 2019-07-18
                        • 2020-04-15
                        • 2013-08-16
                        • 2018-07-21
                        • 2020-06-11
                        相关资源
                        最近更新 更多