非法指令:4导入python pandas时

问题描述 投票:1回答:2

由于带有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。

  • 如何找出导致错误的软件包?
  • 我需要设置架构标志还是什么?
  • 我怎样才能解决这个问题?
python macos python-2.7 pandas homebrew
2个回答
2
投票

删除.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或其中一个依赖项。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.