【发布时间】:2014-01-24 16:15:14
【问题描述】:
我正在尝试让old piece of software 恢复工作。它是一个独立的数据库客户端,其图形界面用python-glade 描述,并使用/使用了python 模块gtk。
我上次使用它是两三年前的事了,那时它可以开箱即用。我不知道它适用于不同库的哪个版本。
我最初想在虚拟环境中隔离它的依赖关系,但是其中两个是pygtk和gobject,在linux上使用pip似乎很难安装,恐怕我最终得到了一个类似名称的全局安装库相当肮脏。
该软件的原作者说他最近没有太密切关注 gtk 的发展,他暗示用 from gi.repository import Gtk; gtk = Gtk 替换 import gtk,但如果我这样做,我会在库模块中遇到分段错误:
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40:
Warning: g_type_get_qdata: assertion 'node != NULL' failed
from gtk import _gtk
Segmentation fault (core dumped)
无论如何我都不知道在哪里可以得到gdk,它也被使用了。
一个严重的问题是我不清楚模块之间的区别是什么:pygtk、gtk、gi.repository.Gtk。
【问题讨论】:
-
gi.repository.Gtk 表示 GTK+ 3.x,而 pygtk 表示 GTK+ 2.x。从长远来看,更新到 GTK+ 3 可能是一个好主意,但版本 2 仍然可以正常工作,并且可以持续工作多年,(并且升级到 GTK3 可能比 oneliner 更复杂)。我建议您首先使用 pygtk 进行工作——这应该是迄今为止最容易完成的。也许如果您包含 pygtk 的原始问题,有人可以提供帮助。
-
哦,关于 pygtk 和 gobject ——这些是非常常见的组件,几乎所有使用标准包管理系统的 Linux 操作系统都应该提供这些组件。
标签: python linux gtk pygtk gobject-introspection