我试图在我的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