非法指令:导入时 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 的架构。
由于我的 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 的架构。