Python vim和conque gdb插件的问题
我们有几个开发主机,大多数是基于red hat的。除了两个,我可以让vim和conque gdb一起运行,没有问题。但是,在两台主机上,我在启动gdb时会遇到以下情况:Python vim和conque gdb插件的问题,python,vim,plugins,gdb,Python,Vim,Plugins,Gdb,我们有几个开发主机,大多数是基于red hat的。除了两个,我可以让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> F
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
处理函数conque_gdb#load_python时检测到错误:
第6行:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/myuser/.vim/autoload/conque_gdb/conque_gdb.py”,第39行,在
类RegisteredBpDict(collections.MutableMapping):
AttributeError:“模块”对象没有属性“可变映射”
按ENTER键或键入命令继续
这是在solaris 10、vim 7.4和python版本2.5.1上实现的
我在Redhat5.4、Vim7.0和Python2.4.3上得到了同样的结果
例如,它可以在Redhat5.7上使用Vim7.4和Python2.4.3
这似乎与python有关,但我对python完全不熟悉,所以我不知道根本原因是什么。在不工作的主机上,我甚至重新编译了一些较新的python版本(例如2.7.10),但没有成功
有人能帮我解决这个问题吗?解决这个问题的一种方法是检查
$PATH
中的Python二进制文件是否实际包含Vim插件试图调用的模块和属性
在不工作的主机上运行python
,并使用hasattr()
检查模块/属性:
如果结果为False
,则Python在$PATH
中使用的库不包含插件所需的依赖项
正如评论中所讨论的,这可以通过确保Python使用正确的库进行编译来解决,这是Vim使用的Python版本。您应该检查模块
集合
是否包含可变映射
。在不工作的主机上运行python
,并检查导入集合的结果;hasattr(集合,“可变映射”)。如果设置为False,则$PATH
中默认Python使用的库不包含插件所需的依赖项。对于其他好奇的人,可以在这里找到源代码:好的,正如预期的那样,在非工作主机上我将得到false,而在工作主机上我将得到true。现在我该如何解决这个问题?正如我所说,我不熟悉python,我不知道如何修复库。好的,我必须补充,在非工作主机上,我还有一个新编译的python 2.7.10,它为上述测试提供了true
。然而,即使我把它放在我的$PATH
中,我仍然会在vim中得到这个错误,所以看起来vim/conque_gdb没有使用我路径中的python?好的,实际上我只是能够通过使用较新的单独编译的python版本重新编译vim来解决这个问题。如果你添加你的提示作为一个单独的答案,我将接受它。太好了,很高兴听到我的提示有用!添加了一个答案,谢谢。为了提供更多提示,以防其他人遇到这个问题:vim拒绝使用我单独的python构建,并且始终使用系统默认值。我必须为vim提供一个具体的python路径来使用这个特定版本进行编译,比如:vi_cv_path_python=/pythonpath/bin/python./configure——启用pythoninterp
注意,vi_cv_path_python
变量包含到python
二进制文件的路径。
>>> import collections; hasattr(collections, "MutableMapping")
True