Sto cercando di aggiungere pretty printing per STL nel mio GDB su Ubuntu 14.04. Alcuni dettagli sugli strumenti:GDB pretty printing ImportError: Nessun modulo denominato 'printers'
OS: Ubuntu 14.04
versione gdb: versione 7.7
pitone: 2.7.6
versione python3: 3.4.0
Ma dopo che l'installazione esattamente come dicevano le istruzioni. Ricevo ancora i seguenti errori:
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.
Quindi ho controllato due volte la mia bella directory di installazione di stampa. Sotto la directory /home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/
, posso chiaramente vedere che ho il file printers.py. E vedo anche il contenuto di printers.py, sono sicuro che ha anche la classe register_libstdcxx_printers
. Perché l'interprete Python sta ancora lamentando la mancanza del modulo printers
? Questo mi sembra davvero strano.
No, non esiste una "ricerca" per i file modulo. Se una directory in sys.path contiene altre directory, questi devono essere * pacchetti * affinché tu possa importare i moduli dall'interno. Ma poi devi dare il nome del pacchetto nella dichiarazione di importazione. Per esempio. "import gdb" funziona, e "importa gdb.printing" funziona, ma * non * "importa la stampa". – deets
@deets Grazie per aver menzionato i [_ pacchetti] (https://docs.python.org/2/tutorial/modules.html#packages) _ concetti in python. Non so pitone sta organizzando sottomoduli come questo. – Dreamer
Inizialmente avevo bisogno di modificare '' python/libstdcxx/v6/__ init __. Py'' e sostituire '' dalle stampanti import register_libstdcxx_printers'' con '' da .printers import register_libstdcxx_printers'' (My GDB include Python 3.4) –