Używanie Pythona 2.7.3 z Numpy 1.6.2 na 64-bitowym Ubuntu 12.04. Dodatkowe wersje są obecne w systemie (Python 2.6.4 i Numpy 1.6.1), ale według mojej najlepszej wiedzy nie mają one wpływu na zdarzenia opisane poniżej.Numpy kończy się niepowodzeniem z python-dbg (niezdefiniowany symbol: Py_InitModule4_64)
Pracuję nad programem Python, który używa Numpy, i otrzymuję błąd, gdy próbuję uruchomić określone polecenie z programu. Postanowiłem więc zainstalować python2.7-dbg, aby uruchomić program i sprawdzić, czy to pomoże w debugowaniu. Więc biegnę
$ python-dbg <command>
zamiast
$ python <command>
Jednak daje to "niezdefiniowany symbol: Py_InitModule4_64" błąd związany z NumPy. Nie ma znaczenia, co dokładnie próbuję uruchomić; błąd występuje również w przypadku poleceń, które się powiodą, jeśli działają z "zwykłym" pythonem. Występuje nawet jeśli próbuję zaimportować numpy w pustym wierszu 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]
>>>
Importowanie numpy powiedzie się, gdy w czystej wierszu Pythona.
Nie miałem szczęścia znajdowania informacji w Internecie. Najbardziej zbliżony do mojego błędu jest this bug on debian, który jest dokładnie taki sam, ale został zamknięty przed dostarczeniem jakichkolwiek dalszych informacji. Zainstalowałem zarówno pakiety python-numpy-dbg, jak i python-apt-dbg z APT; Mam dostęp sudo do maszyny, więc zmiany, które wprowadzam, są ważne dla całego systemu. O ile mi wiadomo, nie ustawiono opcji chroot dla żadnego z procesów, które próbuję uruchomić, więc strona błędu Debiana nic mi nie pomoże.
Każda pomoc zostanie bardzo doceniona.
Możesz chcieć sprawdzić zmienną środowiskową '$ PYTHONPATH'. Wystarczy spojrzeć na pakiet python-numpy-dbg dla Ubuntu, który nie powinien być importowany z/usr/local/lib. Dziwnie to wygląda. – Iguananaut
Albo, co ważniejsze, nawet jeśli nie ma niczego na '$ PYTHONPATH', wygląda na to, że zainstalowałeś własną kopię Numpy (może używając pip lub easy_install) i zastępuje ona Numpy instalowaną przez apt. – Iguananaut
Dzięki, myślę, że postawiłeś mnie na właściwej drodze. Poprzednia wersja numpy (1.6.1), która była obecna w systemie od momentu, kiedy dołączyłem do projektu, znajduje się w /usr/lib/python2.7/dist-packages, a ta, którą zainstalowałem (1.6.2) za pośrednictwem pip zostały umieszczone w /usr/local/lib/python2.7/dist-packages. Nie sądziłem, że to ma znaczenie, ale teraz, gdy sprawdziłem sys.path, nie było numpy. Teraz spróbuję dodać nową numpy do ścieżki lub powrócić do starej. – Boris