python - 使用 jedi-vim 使用 gobject introspection 在 python 中自动完成自己的 gobject 派生库
问题描述
我正在尝试创建一个使用 gobject 库作为基础的共享 C 库。所以我的对象在 GObject 中继承自 GObject。GObject 允许通过 GObject 内省绑定到所有不同的脚本语言,例如 Python。然后从 python 中可以从 gi.repository 导入库。
import gi
gi.require_versions({'Edf': '0.0', 'GLib': '2.0'})
from gi.repository import Edf
Vim 通过 jedi-vim 提供自动补全功能。这对于使用 GObject 自省的其他库(例如 GLib 和 GTK)来说是开箱即用的。我想使用 pytest 来运行库的一些单元测试。我非常想使用带有自动完成功能的 vim 为我自己的库编辑我的文件。所以如果我像上面那样导入一个库,我确实会为 GLib 自动完成,但不会为我的 Edf 模块。
我试图通过将 GI_TYPELIB_PATH 环境变量设置为包含我的 Edf.typelib 文件的目录来让自动完成工作。我还创建了一个 debian 包并将库安装到/usr/lib/x86_64-linux-gnu/
和 typelib 到/usr/lib/x86_64-linux-gnu/girepository-1.0/
,这两种方法都足以在 REPL 中自动完成,例如 bpython3、ipython3 甚至是 python REPL,但是我无法使用 jedi- 完成vim里面的vim。
我会很高兴看到它工作。有没有人有任何提示让它工作?
最好的问候,并感谢您的关注。
解决方案
由于我打算使用的 python 版本与被调用的版本不匹配,我遇到了类似的错误。
确保 jedi 使用的是预期版本的 python。例如添加 let g:jedi#force_py_version = 3 到你的 .vimrc
推荐阅读
- python - 如何测试 Python ctypes 中的指针相等性?
- c# - 如何将按钮的索引传递给 EventHandler?
- python - for 循环遍历列表
- jquery - 带有标记和线路连接的传单
- lua - 如何在love2D中垂直和水平居中对齐文本?
- c# - 无法将“System.Collections.Generic.List[Interfaces.IUser]”类型的对象转换为“System.Linq.IQueryable[Interfaces.IUser]”类型的对象
- html - 将网站投入生产时如何设置html表单操作
- python - 更改 A 。M 到只是 AM
- c - 使用 CLOCK_REALTIME 的 clock_gettime 有什么问题?
- openstack - CREATE_FAILED : Flavor 的本地磁盘冲突。您需要创建一个可启动的卷来为您的实例使用这种风格