【问题标题】:Wheel installation from within requirements.txt从 requirements.txt 中安装轮子
【发布时间】:2020-03-25 01:05:06
【问题描述】:

我正在尝试配置我的requirements.txt,如下所示:

wheel
apache-airflow

我创建了python3.8 -m venv ~/test-env 并尝试进行安装。问题是

python -m pip install -r requirements.txt

产生大量消息

error: invalid command 'bdist_wheel'                                                                                                                                                                                            

----------------------------------------                                                                                                                                                                                        
Failed building wheel for thrift        

在进行requirements.txt 安装时,我确保已安装wheel:

Collecting wheel (from -r requirements.txt (line 1))                                                                                                                                                                              
Using cached https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.

但是如果我单独安装的话

python -m pip install wheel
python -m pip install -r requirements

它工作正常,python -m pip -r requirements 结束时没有错误消息。

那么是不是可以将wheel 安装到requirements.txt 中?安装到venv 时,处理它的正确方法是什么?在requirements.txt安装之前安装它?

【问题讨论】:

  • 如果你查看 wheel 包,你会看到:“这个库是 Python 轮子打包标准的参考实现,如 PEP 427 中所定义。”安装它没有任何意义。
  • @SitiSchu 在官方文档指南中提到通过pip 确保最新版本setuptools 和wheel。 packaging.python.org/tutorials/packaging-projects/…
  • 这是打包项目的文档,不是安装包。
  • @SitiSchu 不安装wheel 包bdist_wheel 命令不适用于setup.py。这正是我在错误消息中看到的。为什么说没有意义?
  • 正如您分享的链接中所解释的,在构建您自己的分发包以将它们上传到 pypi 时,这是一个要求,而不是在其他地方安装您的包时的要求(即没有必要将其包含在 requirements.txt 中)

标签: python python-3.x pip python-wheel python-venv


【解决方案1】:

我相信旧版本的 pip 会发生这种情况。例如,在我的快速测试中,它发生在 pip 9.0.1 上,它默认由 Python 3.6 的 ensurepip 标准库提供,但没有一旦 pip 更新到 19.2.3 就不会发生,据我所知,它应该与 Python 3.8 捆绑在一起。您似乎使用的是 Python 3.8,所以我对您遇到此错误这一事实感到困惑。无论如何这个错误,不应该有效地阻止需求的实际安装。

如果可能,我建议更新 pip:

python -m pip install --upgrade pip

安装要求之前:

python -m pip install --requirement requirements.txt

在这种情况下,从需求文件中安装 wheel(或更新 pip)是没有用的。

【讨论】:

  • 如果你有一个需要在安装过程中构建一个轮子的包怎么办?如果轮子被收集并且在轮子之前安装的包它不起作用。
  • @ingyhere 我不明白你的意思。 ——这是一个相当古老的问答。从那以后情况发生了变化。
  • 我的意思是你不能在同一个需求文件中安装轮子用于其他东西。它在 21.1.x 版本(撰写本文时的最新版本)中不起作用。 Pip 必须在安装需求文件之前单独安装wheel。 Here's a kludgy workaround。由于这个问题来自 2019 年,我认为它在 2021 年相对较新。
  • 我猜,你可能想禁用 pip 的“构建隔离”。查找它,看看这是否有助于您的用例。
猜你喜欢
  • 2020-07-09
  • 2021-06-28
  • 2019-02-27
  • 2015-03-25
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多