【问题标题】:Problems with vim and conque gdb pluginvim 和 conque gdb 插件的问题
【发布时间】:2015-10-27 07:41:15
【问题描述】:

我们有几个开发主机,主要是基于红帽的。在除了两个之外的所有这些上,我可以毫无问题地将 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 上得到了同样的结果。

例如在 redhat 5.7 上使用 vim 7.4 和 python 2.4.3。

这似乎与python有关,但我真的完全不熟悉并且迷失了python,所以我不知道根本原因是什么。在非工作主机上,我什至重新编译了一些较新的 python 版本(例如 2.7.10),但没有成功。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你应该检查模块collections是否包含MutableMapping。在不工作的主机上运行python 并检查import collections; hasattr(collections, "MutableMapping") 的结果。如果你得到 False,$PATH 中默认 Python 使用的库不包含插件所需的必要依赖项。对于其他好奇的人,可以在这里找到源代码:gh: vim-scripts/Conque-GDB
  • 好的,正如预期的那样,在非工作主机上我会得到假,而在工作主机上我会得到真。现在我该如何解决这个问题?正如我所说,我不熟悉python,我不知道如何修复库。
  • 好吧,我必须补充一下,在非工作主机上,我还有一个新编译的 python 2.7.10,它为上述测试提供了true。但是,即使我把它放在我的$PATH 中,我仍然会在 vim 中收到这个错误,所以这似乎是 vim/conque_gdb not 使用我路径中的 python?
  • 好吧,实际上我只是能够通过使用更新的、单独编译的 python 版本重新编译 vim 来解决这个问题。如果您将提示添加为单独的答案,我会接受。
  • 太好了,很高兴听到我的提示有用!已添加答案,谢谢。

标签: python vim plugins gdb


【解决方案1】:

解决这个问题的一种方法是检查$PATH 中的 Python 二进制文件是否真的包含你的 Vim 插件试图调用的模块和属性。

在不工作的主机上运行python,并使用hasattr()检查模块/属性:

>>> import collections; hasattr(collections, "MutableMapping")
True

如果结果是False,则$PATH 中Python 使用的库不包含插件所需的必要依赖项。

根据 cmets 中的讨论,这可以通过确保使用正确的库编译 Python 来解决,这是 Vim 使用的 Python 版本。

【讨论】:

  • 提供更多提示,以防其他人遇到此问题:vim 拒绝使用我单独的 python 构建,并且始终使用系统默认值。我必须为configure 提供一个具体的python 路径,以便vim 使用这个特定版本进行编译,如下所示:vi_cv_path_python=/pythonpath/bin/python ./configure --enable-pythoninterp 请注意vi_cv_path_python 变量包含python binary 的路径.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 2015-03-04
相关资源
最近更新 更多