gpt4 book ai didi

python - 在 IPython 中运行 %%cython-magic 单元时出现 CompileError/LinkerError : "command ' gcc' failed with exit status 1"mean, 是什么意思

转载 作者:行者123 更新时间:2023-12-01 07:20:27 25 4
gpt4 key购买 nike

有时,当我在 IPython 笔记本中运行 %%cython-cell 时,我会得到很长的回溯,并以相当短的错误消息结尾:

CompileError: command 'gcc' failed with exit status 1

LinkError: command 'gcc' failed with exit status 1

在 Windows 上相应的消息是:

CompileError: command 'C:.\Microsoft Visual Studio\..\cl.exe' failed with exit status X

LinkError: command 'C:..\Microsoft Visual Studio\..\link.exe' failed with exit status YYYY

是否可以获得有关潜在错误的更准确信息?

此类 %%cython-cell 的示例如下:

[1] %load_ext Cython
[2] %%cython
from sklearn.tree._tree cimport Node
print("loaded")

最佳答案

%%cython 魔法使用 distutils 在底层构建 Cython 扩展,IPython 不会捕获输出 gcc或其他编译器/链接器记录到标准错误/输出。

为了查看编译器/链接器记录的错误和警告,必须转到编译器记录错误的位置,这取决于 IPython 的启动方式。

在 Linux 上还有另一种可能性:安装 wurlitzer打包并通过 %load_ext wurlitzer 激活它,这也会捕获 gcc 的输出并将其显示在笔记本中,另请参阅 this answer .

遗憾的是,wurlitzer 仅适用于 Linux,而以下选项适用于任何操作系统。

IPython/Jupiter 笔记本:

当笔记本从终端启动时,例如通过ipython笔记本或类似的,然后可以在这个终端中看到编译器输出 - 我们看到上面的单元格的问题是:

/home/ed/.cache/ipython/cython/_cython_magic_5f6d267a6f541c572b4517a74d5c9aad.c:607:31:fatal error: numpy/arrayobject.h: No such file or directorycompilation terminated.

缺少 numpy-headers,可以在 numpy.get_include() 中找到。

IPython 控制台

如果从终端启动 IPython,错误将直接记录到 IPython 控制台。但请注意:编译器/链接器输出将直接出现在错误跟踪的开头:

 >>> ipython
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: %load_ext Cython

In [2]: %%cython
...: from sklearn.tree._tree cimport Node
...: print("loaded")
...:
...:
/home/ed/.cache/ipython/cython/_cython_magic_1182f410e5c0a56b03b28dd88700704d.c:607:31: fatal error: numpy/arrayobject.h: No such file or directory
compilation terminated.
---------------------------------------------------------------------------
DistutilsExecError Traceback (most recent call last)
....

CompileError: command 'gcc' failed with exit status 1

第一行告诉我们需要知道的一切!

Spyder:

至少从 Spyder 3.3.3 开始,编译器/链接器的输出可以在 IPython 控制台中看到(与独立的 IPython 控制台相同)。

<小时/>

示例 %%cython-cell 可以按如下方式修复:

%%cython -I <path from numpy.get_include()>
from sklearn.tree._tree cimport Node
print("loaded")

关于python - 在 IPython 中运行 %%cython-magic 单元时出现 CompileError/LinkerError : "command ' gcc' failed with exit status 1"mean, 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57726729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com