Próbuję dodać pretty printing dla STL w moim GDB na Ubuntu 14.04. Niektóre szczegóły dotyczące narzędzi:GDB pretty printing ImportError: Brak modułu o nazwie 'printers'
OS: Ubuntu 14.04
wersja gdb: wersja 7.7
python: 2.7.6
wersja python3: 3.4.0
ale po instalacji dokładnie tak, jak mówi instrukcja. Nadal dostaję następujące błędy:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/__init__.py", line 19, in <module>
from printers import register_libstdcxx_printers
ImportError: No module named 'printers'
/home/jerry/.gdbinit:6: Error in sourced command file:
Error while executing Python code.
Reading symbols from main...done.
Potem dwukrotnie sprawdziłem mój ładny katalog instalacji drukowania. W katalogu /home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/
widzę wyraźnie, że mam plik printers.py. Widzę też zawartość printers.py, jestem pewien, że ma również klasę register_libstdcxx_printers
. Dlaczego interpreter python wciąż narzeka na brak modułu printers
? Wydaje mi się to naprawdę dziwne.
Nie, nie ma "wyszukiwania" plików modułów. Jeśli katalog w sys.path zawiera inne katalogi, muszą to być * paczki *, abyś mógł importować moduły od wewnątrz. Ale musisz podać nazwę pakietu w deklaracji importu. Na przykład. "importuj gdb" działa, a "importuj gdb.printing" działa, ale * nie * "importuj drukowanie". – deets
@deets Dziękujemy za wzmiankę o _ [pakiety] (https://docs.python.org/2/tutorial/modules.html#packages) _ koncepcjach w pythonie. Nie wiem, Python organizuje takie submoduły. – Dreamer
Edycja potrzebna do edycji '' python/libstdcxx/v6/__ init __. Py'' i zamiany '' from printers import register_libstdcxx_printers'' na '' from .printers import register_libstdcxx_printers'' (My GDB zawiera Python 3.4) –