由于带有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。
删除.pyc
文件也可能有效。
因为它发生在调用之后
dlopen("/usr/local/lib/python2.7/site-packages/matplotlib/_pabc.so", 2);
,
您可以尝试检查为其构建的文件的arch类型:
file /usr/local/lib/python2.7/site-packages/matplotlib/_pabc.so
然后检查硬件的原型:
uname -a
如果共享对象文件(_pabc.so
)不是为该机器构建的,则可能需要重新编译/安装/无论如何,matplotlib或其中一个依赖项。
在我最近的经验中,这确实是由链接库作为模块库的错误架构引起的(如建议的chown)。
特别是,一个C编译的python库作为你要导入的python模块的一部分(模块目录中的_mymodule.so
文件)调用链接系统库(例如.libgfortran.dylib
),并且两者之间存在体系结构不匹配。
如前所述,您可以使用uname -a
检查系统的体系结构,并通过file /path/to/lib.dylib
命令检查有问题的dylib的拱形。