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

时间:2012-11-27 15:09:21

标签: python ubuntu numpy

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

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

$ python-dbg <command>

而不是

$ python <command>

然而,这给出了与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]
>>>

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

正如OP所证实的,这里的线索在回溯中,表明您导入的numpy位于/usr/local/lib/。但是,apt安装的软件包进入/usr/lib/pythonX.Y,其中安装了pipeasy_install等的非Ubuntu Python软件包安装在/usr/local/lib/pythonX.Y下并取代系统软件包

现在你应该卸载你在/usr/local/lib/python2.7/dist-packages下安装的Numpy,以便python-numpy安装的Numpy能够正常工作。在将来你可能已经安装并使用usercustomize.py做一些事情来切换它们,但我现在不在Ubuntu机器上,所以我无法测试它。