在requirements.txt中安装wheel

8

我正试图配置我的 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 wheel打包标准的参考实现,如PEP 427所定义。" 安装它没有什么实际意义。 - SitiSchu
1
这是打包项目的文档,而不是安装软件包的文档。 - SitiSchu
如您分享的链接所述,当构建自己的分发包时,将其上传到pypi是必需的,但在其他地方安装软件包时(即在requirements.txt中不需要包含它),则不需要这样做。 - buran
@buran,那么当从venv安装(在核心Python安装中安装正常)时如何解释此错误消息? - St.Antario
当您运行 python -m pip install apache-airflow 时,是否出现错误? - SitiSchu
显示剩余4条评论
1个回答

5
我认为这是在旧版本的pip中发生的情况。例如,在我的快速测试中,它会在pip 9.0.1上发生,pip 9.0.1是Python 3.6的ensurepip标准库默认提供的,但是一旦升级到19.2.3,它就不会再出现了,据我所知,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
@ingyhere 我不明白你的意思。-- 这是一个相当古老的问答。自那以后情况已经发生了变化。 - sinoroc
我的意思是,您不能将用于其他内容的wheel安装到同一要求文件中。在版本21.1.x(本文撰写时的最新版本)中无法使用。Pip必须提前单独安装wheel,然后再安装要求文件。这是一个笨拙的解决方法。由于这个问题是2019年的,所以我认为它在2021年仍然相对较新。 - ingyhere
我的猜测是,您可能想禁用 pip 的“构建隔离”。查找一下,看看它是否有助于解决您的使用情况。 - sinoroc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接