【问题标题】:update unmantained software using pygtk使用 pygtk 更新无人维护的软件
【发布时间】:2014-01-24 16:15:14
【问题描述】:

我正在尝试让old piece of software 恢复工作。它是一个独立的数据库客户端,其图形界面用python-glade 描述,并使用/使用了python 模块gtk

我上次使用它是两三年前的事了,那时它可以开箱即用。我不知道它适用于不同库的哪个版本。

我最初想在虚拟环境中隔离它的依赖关系,但是其中两个是pygtkgobject,在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,它也被使用了。

一个严重的问题是我不清楚模块之间的区别是什么:pygtkgtkgi.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


【解决方案1】:

正如jku 所说,GTK2 还活着并且在踢。如果您安装了正确的依赖项,您将能够使原始应用程序正常工作。快速查看依赖项列表给我的印象是您应该安装以下软件包(在基于 Debian 的系统上):

  • python2.7(或任何 Python2.x)
  • python-sqlalchemy
  • python-gtk2
  • python-gobject-2
  • python-lxml
  • python-pysqlite2
  • python-glade2

如果遇到了

ImportError: No module named xxxx

您通常通过安装相应的 python-xxxx 包来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2011-02-24
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多