在安装numpy时出现错误,提示“无法构建符合PEP 517标准的numpy轮子,因此无法直接安装”。

32
我正在尝试在Python虚拟环境中使用命令pip install numpy=1.19.1安装特定版本的numpy。但是我遇到了以下错误。
ERROR: Failed building wheel for numpy
Failed to build numpy
ERROR: Could not build wheels for numpy which use PEP 517 and cannot be installed directly

我该怎么解决这个问题?我正在使用Python 3.9.6和Pip 21.1.3。我在macOS Big Sur上。

5个回答

33

在我的MacBook Air(macOS BigSur)笔记本电脑上,通过VS Code的集成终端安装Numpy软件包时,我遇到了相同的错误。后来我找到了解决方法: 之前我使用的是旧版本的pip,即19.2.3。 但当我使用命令升级到最新版本时:

pip install --upgrade pip

然后在运行该命令时

pip install numpy 

它完全正常运行。

在运行上述命令时,我的Python版本是3.8.2。


这个解决方案对我在Python 3.9.10上也起作用。 - Taylor D. Edmiston
使用您的解决方案在Macbook Pro M1上工作过3.9。 - Christopher Nolan
升级 'pip' 版本就是诀窍。 - nishant kumar

24

我认为NumPy目前还没有为Python 3.9做好准备,因为他们需要进行多次检查。你应该尝试使用Python 3.7或3.8更好。

请参阅此线程:https://github.com/numpy/numpy/issues/17569

编辑: 基于NumPy网站上的最新消息(日期为12月31日),Numpy现在似乎也支持Python 3.9和3.10。


2
我在使用 Python 3.10 时遇到了同样的问题,所以安装了 Python 3.8,问题得到了解决。谢谢! - Brayan Montoya Osorio
在 Docker Slim Buster 中,Python 3.10 对我来说无法工作,但在 Python 3.8 中完美运行。 - Thomas
这是从numpy 1.25版本开始的,我相信。所以请执行pip install numpy>=1.25 - J Agustin Barrachina

3
与上述答案类似,升级到Python 3.8解决了此问题。另外,由于这个问题,我无法安装依赖于numpy的scikit-image
我使用conda创建了一个Python 3.8的虚拟环境,即conda create -n py38 python=3.8来切换Python版本。我的电脑是Mac M1,2020年更新至OS Monterey,版本号为12.0.1。

3
如果你使用的是Windows操作系统,那么请安装Visual Studio 2019 Build Tools,然后进入“Individual components”选项卡,勾选最新版本的“Windows 10 SDK”和“MSVC v142 x64/86 build tools - Latest”。这对我解决了安装discord.py时出现的错误。
不过在尝试我的方法之前,可以先像Dhananjay所说试试Python 3.8是否能工作。因为Visual Studio需要大量存储空间,如果Python 3.8可用的话,就能省掉很多空间。
编辑:我刚才才注意到你提到你使用的是Mac操作系统。请执行以下步骤:
  • 在终端窗口中键入python -VV
  • 它应该会显示类似于下面的内容:
Python 3.9.6 (default, Jun 29 2021, 10:19:25)
[GCC 10.3.0]

无论第二行写了什么,都需要安装它。我在WSL2上使用Ubuntu 21.10中的Python,它使用GCC 10.3.0,我已经安装了GCC 10.3.0。

因此,安装 GCC 10.3.0 是否允许您“构建 numpy 的 wheel 包”,并继续使用 Python 3.9.x - Brett Pontarelli
@Brett Pontarelli 是的。在安装任何需要它的扩展后,您实际上可以删除GCC(或其他任何C编译器)。 - some random nerd

1

是的,我也在使用Python 3.10,后来又切换回了Python 3.8。

请访问python/downloads下载Python 3.8。


这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - Fabio Mendes Soares

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