我使用的是 Ubuntu 12.04,安装了 Python 2.7.3 和 PyGObject,我想用 Python 为 Gedit 开发插件。我找到了一个看起来很简单的教程这里。
根据教程,我需要 Gedit 模块与插件界面进行交互:
from gi.repository import GObject, Gedit
尝试导入 Gedit 模块时,我不断收到导入错误。因此,我的问题是:我需要安装什么包才能获得此模块?
我试过了:gedit-dev
,gedit-plugins
编辑:这是上述语句的完整回溯:
ERROR:root:Could not find any typelib for Gedit
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name Gedit
答案1
如果我不使用 Gedit 而直接运行插件代码,我会得到与您相同的错误。
正如您链接的手册中所述,您需要为插件代码创建一个 .plugin 文件。将您的插件代码和 .plugin 文件放入 ~/.local/share/gedit/plugins。重新启动 Gedit。打开 Gedit > 编辑 > 首选项 > 插件并查找您的插件。为您的插件设置复选标记。您的插件现在应该使用 Gedit 代码运行。
要检查插件中的错误,请从控制台启动 gedit。
答案2
回答你的问题,开发 gedit 插件所需的类型库包含在 gedit 包本身中。
$ apt-file search Gedit-3.0.typelib
gedit: /usr/lib/gedit/girepository-1.0/Gedit-3.0.typelib
但是,当以交互方式或从脚本使用 python 时,from gi.repository import Gedit
会搜索/usr/lib/girepository-1.0/
而不是/usr/lib/gedit/girepository-1.0
。这就是导入错误的原因。
您需要在 ~/.local/share/gedit/plugins 中创建适当的 .plugin 和 .py 文件,然后通过在 gedit 首选项对话框中选择插件来运行您的代码。
答案3
导入错误Gedit
可能表示GtkSource-3.0.typelib
缺失或未正确安装。
典型症状还包括您无法加载多个插件(不仅仅是您自己开发的插件),并且gedit
从命令行启动时会收到警告(在 Ubuntu 13.10 Saucy 上看到)。您可以通过安装缺少的软件包来修复此问题:
sudo apt-get install gir1.2-gtksource-3.0
也可以看看:从 Ubuntu 终端启动 gedit 时出现警告
还请注意,GEdit v3 的插件使用的python3
是 Python 2.7.x 版本。