我有一个 Python 应用程序在 12.10 上运行没有问题,但在升级到 13.04 时,应用程序失败并出现以下错误:
except gi._glib.GError, e:
AttributeError:'module' 对象没有属性 'GError'
与 13.04 相关的 Python 2 Gtk 库有变化吗?
答案1
带下划线的函数、方法、属性等在 Python 中用作内部方法。这些可能会更改或删除,且不会发出警告,因此最好不要在该包之外使用这些方法。
请尝试以下操作:
>>> from gi.repository import GObject, GLib
>>> GObject.GError
<class 'gi._glib.GError'>
>>> GLib.GError
<class 'gi._glib.GError'>
这也适用于 Ubuntu 12.10 及更早版本。
答案2
此导入错误发生在 Ubuntu 14.04 上,但不发生在 Ubuntu 12.04 上。基本上是由于从 Python 2.x 过渡到 Python 3。许多模块被重命名或合并。Python 3 不向后兼容 Python 2.x。因此,请将此添加到陷阱列表中。
ImportError: No module named 'gi._glib'
from gi._glib import GError
变成
from gi.repository.GLib import GError