Numpy失败了python-dbg(未定义的符号:Py_InitModule4_64)

Bor*_*ris 10 python ubuntu numpy

在64位Ubuntu 12.04上使用Python 2.7.3和Numpy 1.6.2.其他版本均存在于系统(Python的2.6.4和1.6.1 NumPy的)上,但据我所知,这些对下面所描述的事件没有影响.

我正在使用一个使用Numpy的Python程序,当我尝试从程序运行某个命令时出错.所以,我决定安装python2.7-dbg来运行程序,看看是否有助于调试.所以我跑了

$ python-dbg <command>
Run Code Online (Sandbox Code Playgroud)

代替

$ python <command>
Run Code Online (Sandbox Code Playgroud)

但是,这会给numpy提供一个"未定义的符号:Py_InitModule4_64"错误.我试图跑到底是什么并不重要; 如果使用"常规"python运行成功的命令也会发生错误.即使我尝试将numpy导入空白的python-dbg提示符,也会发生这种情况:

$ python-dbg
Python 2.7.3 (default, Aug  1 2012, 04:55:00)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
    from type_check import *
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
    import numpy.core.numeric as _nx
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
    import multiarray
ImportError: /usr/local/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: Py_InitModule4_64
[134187 refs]
>>>
Run Code Online (Sandbox Code Playgroud)

在纯python提示符下导入numpy成功.

我没有在互联网上找到信息的运气.与我的错误最接近的是debian上的这个错误,这是完全相同的情况,但在提供任何进一步的信息之前已经关闭.我已经从APT安装了python-numpy-dbg和python-apt-dbg软件包; 我有sudo访问机器所以我所做的更改在系统范围内是有效的.据我所知,没有为我正在尝试运行的任何进程设置chroot选项,因此Debian错误页面对我没有帮助.

任何帮助将不胜感激.

Igu*_*aut 4

正如OP所确认的,这里的线索是在回溯中,它显示numpy您正在导入的是/usr/local/lib/. 但是,通过 apt 安装的软件包会进入,而使用、等/usr/lib/pythonX.Y安装的非 Ubuntu Python 软件包则安装在系统软件包下并取代系统软件包。pipeasy_install/usr/local/lib/pythonX.Y

现在,您应该卸载已安装的 Numpy,/usr/local/lib/python2.7/dist-packages以便 python-numpy 安装的 Numpy 能够工作。将来你可能能够同时安装并在usercustomize.py它们之间进行切换,但我现在不在 Ubuntu 机器上,所以我无法对其进行测试。

  • 你真的是说通过 pip 或 easy_install (python 模块的标准)安装的编译后的 python 扩展不能与 python-dbg 一起使用吗?对我来说,这听起来像是一个重大错误。 (5认同)
  • 导致此错误的原因之一也可能是您使用站点包(来自 virtualenv)运行不同的 python 版本(即非 dbg 版本)。要修复设置指向正确的 python 二进制文件的新 virtualenv 并从需求文件加载包。 (3认同)