非法指令:4导入python pandas时

时间:2015-09-26 21:21:58

标签: python macos python-2.7 pandas homebrew

由于带有i7 CPU的Macbook目前使用的是AppleCare,我现在正在开发一款带有核心双CPU的旧款Mac mini。我只是通过USB将Macbook的内置磁盘连接到Mac mini。

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

我用自制软件和pandas等安装了Python,numpy和scipy,并将pip放入虚拟环境中。我的系统是OS X 10.10.5。

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

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

  • 如何找出导致错误的软件包?
  • 我是否需要设置架构标志或什么?
  • 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

删除.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),则可能需要重新编译/安装/无论如何,matplotlib或其中一个依赖项。

答案 1 :(得分:1)

在我最近的经验中,这确实是由链接库作为模块库的错误架构引起的(如 chown 建议的那样)。

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

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