我们有几个开发主机,主要是基于红帽的。除了两个以外,我可以让vim和conque gdb一起运行,没有问题。但是,在两台主机上,我在启动gdb时会得到:
Error detected while processing function conque_gdb#load_python:
line 6:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/myuser/.vim/autoload/conque_gdb/conque_gdb.py", line 39, in <module>
class RegisteredBpDict(collections.MutableMapping):
AttributeError: 'module' object has no attribute 'MutableMapping'
Press ENTER or type command to continue
这是在solaris 10、vim 7.4、python版本2.5.1上。
我在redhat 5.4、vim 7.0和python 2.4.3上也得到了同样的结果。
它可以工作,例如在带有vim 7.4和python 2.4.3的redhat 5.7上。
这似乎与python有关,但我真的对python完全不熟悉和迷茫,所以我不知道根本原因是什么。在不工作的主机上,我甚至重新编译了一些较新的python版本(例如2.7.10),但没有成功。
有人能帮我把这个搞定吗?
最佳答案
解决这个问题的一种方法是检查$PATH
中的Python二进制文件是否实际包含Vim插件试图调用的模块和属性。
在不工作的主机上运行python
,并使用hasattr()
检查模块/属性:
>>> import collections; hasattr(collections, "MutableMapping")
True
如果结果是
False
,则$PATH
中Python使用的库不包含插件所需的依赖项。正如注释中所讨论的,这可以通过确保使用正确的库编译Python来解决,这是Vim使用的Python版本。