252

我正在使用以下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 BTW 中。在 Ubuntu 14.04 中,pip install应用于requirements.txt文件的命令可以正常工作。

4

16 回答 16

82

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

这有效(<pkg>pyserial我的情况下):

python3 -m pip install <pkg>
于 2018-10-09T16:01:01.357 回答
76

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

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

于 2015-08-31T00:15:41.760 回答
73

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

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

原答案:

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

于 2020-09-18T10:08:44.423 回答
18

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

命令:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION
于 2018-05-03T13:27:34.003 回答
11

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

假设我收到此错误:

$ 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

从上面的日志中,很明显https://pypi.org/simple/aalib/找不到 URL 404。然后你就可以猜出导致404的可能原因,即错误的包名。另一件事是我可以修改 pip 模块的相关 python 文件以进一步调试上面的日志。要编辑.whl文件,您可以使用wheel命令 tounpackpack.

于 2020-12-17T08:54:51.413 回答
10

下面的命令对我有用 -

python -m pip install flask
于 2019-04-09T05:24:47.343 回答
6

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

在此处输入图像描述

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

于 2018-08-22T22:08:11.813 回答
4

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

pip install --isolated Flask

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

于 2017-09-13T19:37:10.367 回答
3

Pip install from pypi.org.

pip install -U -i  https://pypi.org/simple package
于 2021-03-02T13:46:23.410 回答
3

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

pip install -U <package_name> --user --proxy=<your proxy>
于 2020-02-19T17:41:50.907 回答
3

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

于 2021-09-03T02:05:46.513 回答
2

一个可能的错误是,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轻松阅读

于 2021-08-05T13:35:26.973 回答
1

awscli在 anaconda (python 3.7) 中安装 Windows 10 时出现此错误。在进行故障排除时,我去了答案https://stackoverflow.com/a/49991357/6862405,然后去了https://stackoverflow.com/a/54582701/6862405。最后发现需要安装库PyOpenSSL、、、和。安装这些(使用简单的命令)后,我能够安装.cryptographyenum34idnaipaddresspip installawscli

于 2019-12-23T12:20:24.303 回答
0

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

于 2021-01-19T01:11:02.057 回答
-2

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

于 2021-08-08T01:04:50.467 回答
-11

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

升级 pip 版本

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

python.exe -m pip install --upgrade pip

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

输入 jupyter 笔记本

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

希望能帮助到你 !!!!!!!!!!!

于 2018-11-30T06:15:27.127 回答