我試圖在我的GDB的Ubuntu 14.04上爲STL添加pretty printing。在工具的一些細節:GDB漂亮的打印ImportError:沒有名爲'printers'的模塊
操作系統:Ubuntu的14.04
gdb的版本:7.7
Python版本:2.7.6
python3版本:3.4.0之後
但我的設置完全如教學所說。我仍然得到以下錯誤:
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.
然後,我已經雙重檢查了我漂亮的打印安裝目錄。在目錄/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/
下,我可以清楚地看到我有printers.py文件。我還查看了printers.py的內容,我確定它也有register_libstdcxx_printers
類。爲什麼python解釋器仍然抱怨缺少printers
模塊?這對我來說似乎很奇怪。
不,沒有「搜索」模塊文件。如果sys.path中的某個目錄包含其他目錄,則這些目錄必須是* packages *,以便您能夠從內部導入模塊。但是,您需要在導入語句中提供軟件包名稱。例如。 「import gdb」起作用,「import gdb.printing」起作用,但是* not *「導入打印」。 – deets 2014-10-06 17:11:14
@deets感謝您在Python中提及_ [packages](https://docs.python.org/2/tutorial/modules.html#packages)_概念。我不知道python是這樣組織子模塊的。 – Dreamer 2014-10-07 18:19:15
我需要編輯''python/libstdcxx/v6/__ init __。py''並用''from .printers import register_libstdcxx_printers''替換''從打印機導入register_libstdcxx_printers''(我的GDB包括Python 3.4) – 2014-10-24 08:49:47