【问题标题】:Could not find a version that satisfies the requirement for select requirements找不到满足选择要求的版本
【发布时间】:2019-09-18 12:39:20
【问题描述】:

我目前正在尝试安装一个需求,它告诉我当我尝试将它们注释掉时找不到它,它发生在其他人身上。

我刚刚部署了一个Ubuntu 18.04 服务器。通过以下命令创建虚拟环境 python3 -m venv --system-site-packages env 但每次我尝试运行 pip install -r requirements.txt 它都会失败并显示

Collecting apparmor==2.12 (from -r requirements.txt (line 1))
  Could not find a version that satisfies the requirement apparmor==2.12 (from -r requirements.txt (line 1)) (from versions: )
No matching distribution found for apparmor==2.12 (from -r requirements.txt (line 1))

如果我尝试安装说pip install apparmor,它会告诉我

Collecting apparmor
  Could not find a version that satisfies the requirement apparmor (from versions: )
No matching distribution found for apparmor

但是如果我注释掉 apparmor,它会告诉我这个

Collecting apturl==0.5.2 (from -r requirements.txt (line 2))
  Could not find a version that satisfies the requirement apturl==0.5.2 (from -r requirements.txt (line 2)) (from versions: )
No matching distribution found for apturl==0.5.2 (from -r requirements.txt (line 2))

它会随机地为其他人继续。要求是在我的本地(也是 ubuntu 18)上提出的,所以不确定为什么这适用于本地但不适用于新部署。

我还确定它是最新版本的 pip

【问题讨论】:

  • apparmorapturl 在 PyPI 中不可用,它们是 Ubuntu 软件包的一部分,只能通过 apt install apparmor/apt install apturl 安装。您可能已经冻结了系统站点包。
  • @hoefling 这就是问题所在,如果你想让它成为答案

标签: python ubuntu pip virtualenv ubuntu-18.04


【解决方案1】:

当您不使用 虚拟环境 使用 python 时,这是一个常见问题,因此您的requirements.txt 列出了您的系统或操作系统的所有包 pythons,而您必须只有项目中的包。在某些时候,你用pip freeze > requirements.txt 更新你的requirements.txt,没有虚拟环境,你用你的操作系统和你的项目中的所有python 包更新了requirements.txt,并可能上传到一个存储库。因此,当您想在另一台计算机上运行并安装所有软件包时,您会遇到这种错误...

ubuntu默认安装了Python,你必须考虑这一点,其他系统也一样。

  1. 第一条规则是每次都使用虚拟环境“virtual env documentation
  2. 我知道这很辛苦,但是您可以备份 requirements.txt 并清理它。然后尝试在没有任何软件包的情况下运行您的程序(全新安装),当由于缺少软件包而发生错误时,您添加它并使用pip freeze > requirements.txt 更新

【讨论】:

  • 谢谢,这对我有帮助
【解决方案2】:

apparmorapturl 是 Ubuntu 软件包,如果您的代码不使用它们的代码,您可以放心地忽略它们;只需将它们从requirements.txt 中删除即可。如果您的代码依赖于它们,请确保它们是通过apt 安装的:

apt install -y apparmor apturl && pip install -r requirements.txt

【讨论】:

  • 如果项目不需要它们,你知道为什么它们会包含在 requirements.txt 中吗?
  • @hal9000 如果您的意思是通过例如 requirements.txt 生成pip freeze,那么它在您的代码中实际使用的包之间没有区别。它只是收集根据 PEP 376 安装的所有内容。无论如何,最好手动制定要求。
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2021-12-25
  • 2018-10-13
  • 2019-07-18
  • 2020-04-15
  • 2015-11-24
  • 2013-08-16
  • 2018-07-21
相关资源
最近更新 更多