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


139

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


1
有时,您的Django项目可能依赖于本地brew软件包。仔细检查您是否已安装这些!
James111 '16

我遇到了同样的问题,使用“ python -m pip install flask”我能够安装它
Freelancer

Answers:


47

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

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


因此,找出所有需求的唯一方法是freeze在工作设置中安装已安装的软件包,然后将其中的所有内容添加到requirements.txt文件中?
加百利

2
@Gabriel:目前是的,因为运行一个setup.py包含所需依赖项的文件,所以安装了许多Python软件包。一旦Python软件包成为wheel文件(pythonwheels.com),这将变得更好,该文件允许您收集所有需要的软件包的列表,而无需在setup.py文件中执行任意代码。
Simeon Visser,2015年

1
感谢您对Simeon的解释。如果您不介意的话,还需要做一件事:为什么在Ubuntu 14.04中没有发生这种情况,而在Ubuntu 12.04中却发生了呢?
加百利

4
@Gabriel:我不确定-根据我的经验,pip当找不到要安装的软件包时,它总是中止。话虽这么说,pip正在积极开发中,因此可能是您有一个我没有使用过的版本。
Simeon Visser 2015年

@SimeonVisser,“ [wheels]允许您收集所有需要的软件包的列表,而无需执行任意代码”,有趣,介意分享如何实际操作(到目前为止)?
sschuberth,

39

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

这个工作(<pkg>pyserial在我的情况):

python3 -m pip install <pkg>

1
发生这种情况时,在setuptools的存在python_requires='>=3.0'为必要条件
胡Kabbali

11

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

命令:

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


4

尝试使用以下命令通过Powershell安装flask。

pip install --isolated Flask

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


3

并非总是如此,但是在某些情况下,该软件包已经存在。例如-getpass。它未在“点列表”中列出,但可以导入和使用:

在此处输入图片说明

如果我尝试通过pip install getpass进行安装,则会出现以下错误:“找不到满足要求getpass的版本”



1

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

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


-5

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

升级点子版本

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

python.exe -m pip安装--upgrade pip

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

类型jupyter笔记本

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

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


2
jupyter与这个有什么关系?
Bzazz

升级pip如何解决依赖关系?它要求在调用目录中具有依赖性。
Rizwan Javid

-7

可能有帮助

sudo pip install wheel == 0.29.0


4
抱歉。.我不会读中文或其他亚洲语言。.推荐链接将来可能会中断...请在此处张贴要点。正如其发布的低质量答案,没有上下文。
ZF007 '18

1
推荐链接为日语...请考虑分享英语链接
javidazac 18-4-6

6
该代码对所有开发人员都是可以理解的,日语的使用量很少,而且几乎没有标题介绍下面的代码(如果对您来说太难了,请翻译它,但您确实不需要这样做就可以理解发生了什么)。只要代码示例清晰且不完全依赖于所使用的外语,使用英语以外的其他语言就不会有问题。
rg88 '18年

6
@ rg88这对于注释(也许有警告)是可以的,但是关于Stack Overflow的答案应该是自包含的并且令人信服。
三人
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.