【问题标题】:Error "Could not find any typelib for Gtk" with Python3 and GTK3使用 Python3 和 GTK3 时出现错误“找不到 Gtk 的任何类型库”
【发布时间】:2014-09-22 02:32:18
【问题描述】:

我无法让 Python3 与 GTK3 一起工作。我在集群环境中,我从源代码重新编译了所有内容。

当我运行一个简单的例子时:

from gi.repository import Gtk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

我有以下错误:

错误:root:找不到 Gtk 的任何类型库 回溯(最近一次通话最后): 文件“gtk3_example.py”,第 2 行,在 从 gi.repository 导入 Gtk ImportError:无法导入名称“Gtk”

【问题讨论】:

    标签: python-3.x gtk3 pygobject gobject-introspection


    【解决方案1】:

    根据您要自省的内容,通常需要安装其他软件包。我发现至关重要的是 gir1.2-gtk-3.0(或 2.0,具体取决于您编码的版本)。

    【讨论】:

    • 最初我的问题是我必须从源代码安装所有软件堆栈及其依赖项。所以 find-the-good-package 解决方案不是一个选择。但我同意,在更经典的情况下,这可能是一件好事。
    【解决方案2】:

    问题是由于 GTK3 的编译版本未在 gobject-introspection 中引用。

    通过在 gobject-introspection 中列出 .typelib 文件来检查问题很简单

    $ 哪个 g-ir 扫描仪 /Produits/publics/x86_64.Linux.RH6/gobject-introspection/1.40.0/bin/g-ir-scanner $ ls /Produits/publics/x86_64.Linux.RH6/gobject-introspection/1.40.0/lib/girepository-1.0/ cairo-1.0.typelib fontconfig-2.0.typelib GIRepository-2.0.typelib GModule-2.0.typelib win32-1.0.typelib xlib-2.0.typelib DBus-1.0.typelib freetype2-2.0.typelib GL-1.0.typelib GObject-2.0.typelib xfixes-4.0.typelib xrandr-1.3.typelib DBusGLib-1.0.typelib Gio-2.0.typelib GLib-2.0.typelib libxml2-2.0.typelib xft-2.0.typelib

    应该通过使用配置选项 --enable-introspection=yes 重新编译 GTK(及其依赖项)来解决问题。

    【讨论】:

    • 以及如何重新编译GTK?
    • 已经有一段时间了,但我认为这是一个非常经典的获取 tgz、配置、制作、安装。 “--enable-introspection=yes”指的是一个配置选项。你确定你不能通过包装系统解决你的问题吗? (重新编译所有这些东西很痛苦,我记得很清楚)
    • 我在 mac 上工作,并使用 brew install 安装了依赖项,我无法选择重新编译它们。
    • 我不是 mac 专家,所以我无法帮助你。重新编译始终是可能的,但如果您不习惯(设置开发环境,手动获取所有依赖项等等),它会非常复杂。也许 VM 或 docker 对您来说更简单。
    【解决方案3】:

    尝试使用以下代码:

    import gi
    gi.require_version("Gtk", "3.0")
    from gi.repository import GTK
    

    【讨论】:

    • 如何/为什么解决这个问题?它可以很好地解决它,但除非你至少部分解释为什么或如何的逻辑,否则它并不是一个完整的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2012-09-14
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多