非法指令:导入时 4 python pandas

Illegal instruction: 4 when importing python pandas

由于我的 Maci7 笔记本 CPU 目前正在使用 AppleCare,我现在正在开发具有核心双核 CPU 的旧款 Mac mini。我只是通过 USB 将 Mac 书的内部磁盘连接到 Mac mini。

现在回到我的 Python 脚本,我 运行 遇到了一个我不完全理解也不知道如何调试的问题。当我在 Python 2.7.9 中 import pandas 时,Python 完全崩溃并且出现错误 Illegal instruction: 4。经过一些谷歌搜索后,我假设一些包是为错误的架构编译的。但是我不知道是哪个。

我用 homebrew 安装了 Python、numpy 和 scipy,用 pip 安装了 pandas 等到虚拟环境中。我的系统是 OS X 10.10.5.

python -vc "import pandas"的输出很长,给定here

我尝试重新安装 Python、pandas、numpy 和 scipy。

删除 .pyc 文件也可能有效。

因为它发生在调用
之后 dlopen("/usr/local/lib/python2.7/site-packages/matplotlib/_pabc.so", 2);,
您可以尝试检查文件的构建类型:

file /usr/local/lib/python2.7/site-packages/matplotlib/_pabc.so

然后检查您硬件的拱形类型:

uname -a

如果共享对象文件 (_pabc.so) 不是为该机器构建的,您可能需要重新 compile/install/whatever、matplotlib 或其依赖项之一。

根据我最近的经验,这确实是由于链接库与模块库的架构错误造成的(如 chown 所建议)。

特别是,C-compiled python 库作为您要导入的 python 模块的一部分(模块目录中的 _mymodule.so 文件)调用链接系统库(例如 libgfortran.dylib),并且两者之间存在架构不匹配。

如前所述,您可以使用 uname -a 检查系统的架构,并通过 file /path/to/lib.dylib 命令检查有问题的 dylib 的架构。