【问题标题】:Illegal instruction: 4 when importing python pandas非法指令:导入python pandas时的4
【发布时间】:2015-09-26 21:21:57
【问题描述】:

由于我的配备 i7 CPU 的 Macbook 目前使用 AppleCare,我现在正在使用配备双核 CPU 的旧款 Mac mini。我只是通过 USB 将 Macbook 的内部磁盘连接到 Mac mini。

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

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

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

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

  • 如何找出是哪个包导致了错误?
  • 我需要设置架构标志吗?
  • 我该如何解决这个问题?

【问题讨论】:

  • 这需要很多更多信息,至少是构建日志/堆栈跟踪。它应该 brew + pip install 就好了。另一种安装程序是 anaconda,它有一种非常简单/快速的方式来开始使用 pydata。
  • 使用详细标志 (-v) 运行 python,并将错误输出的一部分粘贴到您的问题中。
  • @chown 好的,好的。在尝试更多地理解日志之后,似乎 matplotlib 是罪魁祸首。我想知道预编译的pyc 文件是否是问题所在。无论如何,如果您想提供答案,您将获得我的支持。否则我会自己提供答案。

标签: python macos python-2.7 pandas homebrew


【解决方案1】:

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

【讨论】:

  • 见我上面的评论。重新安装 matplotlib(在自制软件中)就可以了。也许删除 pyc 文件就足够了......您可能希望将其添加到您的答案中
  • 再次感谢您!为了完整起见,我建议您在回答中也提及python -vc "import pandas"
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2018-03-20
    相关资源
    最近更新 更多