如何使用 Python 2.6 在 Windows 上安装 PyGTK / PyGobject?

Posted

技术标签:

【中文标题】如何使用 Python 2.6 在 Windows 上安装 PyGTK / PyGobject?【英文标题】:How do I install PyGTK / PyGobject on Windows with Python 2.6? 【发布时间】:2010-11-20 14:59:55 【问题描述】:

我有一个应用程序,它依赖于我为在 Linux 上工作而构建的 PyGTK、PyGobject 和 PyCairo。我想将它移植到 Windows,但是当我执行 import gobject 时,我得到了这个:

Traceback (most recent call last):
    import gobject
  File "C:\Python26\lib\site-packages\gtk-2.0\gobject\__init__.py", line 30, in <module>
    from gobject.constants import *
  File "C:\Python26\lib\site-packages\gtk-2.0\gobject\constants.py", line 22, in <module>
    from _gobject import type_from_name
ImportError: DLL load failed: The specified procedure could not be found.

这似乎是由于从使用 MinGW 构建切换到 Microsoft Visual Studio 造成的,如 Python Bug 3308 (closed: wontfix) 所述。

有没有什么方法可以在 Windows 上与 Python 2.6 一起安装 PyGTK/PyGObject,而无需从源代码重新编译一个或另一个?

【问题讨论】:

【参考方案1】:

我的工作正常,并没有给我带来太多麻烦,所以我们知道可以做到...

请记住,您可能需要在 Windows 机器上安装以下所有内容:

PyCairo (http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/)

PyGobject (http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/)

PyGTK (http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/)

非官方 以上 3 项的 x64 版本可用here -- 但是,我不能保证也不推荐它们!

当然

GTK+ 运行时(http://ftp.gnome.org/pub/GNOME/binaries/win32/gtk+/ 或 http://ftp.gnome.org/pub/GNOME/binaries/win64/gtk+/)

我怀疑在您的情况下,PyGTK 库没有找到 DLL 所在的 GTK+ 运行时目录。您应该将环境变量 GTK_BASEPATH 设置为您的 GTK+ 运行时目录(通常是 C:\GTK)。

另请参阅PyGTK-on-Windows FAQ

现在,如果您尝试使用 Py2EXE 编译 PyGTK 的 Python,这有点复杂,但也可以这样做...

【讨论】:

ewall: 为什么引用只适用于 32 位?我们如何为 64 位 Windows 7 或 Windows 8 做同样的事情?你能分享一下吗(因为在谷歌搜索中你的链接经常出现在结果中)-ftp.gnome.org/pub/GNOME/binaries/win64? @YumYumYum:唉,我的答案现在已经超过 4 年了,大约比 Windows 7 向公众发布还要早 2 个月!我不记得从那以后我什至试图让旧的 Python 2.6 在更新的 x64 Windows 上运行,所以我没有资格发表评论......但我当然可以将 x64 下载链接添加到帖子中,带有通常的 YMMV 免责声明。另请注意下面digitalPBK的回答。 :) 如果没有 PyGobject,我在尝试安装 PyCairo 时会出现 C 运行时错误,感谢您指导我安装 PyGobject 并解决我的安装问题的提示。【参考方案2】:

PyGTK 一体式安装程序最近已更新:

http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/

这将安装 PyGTK、PyGObject、PyCairo、PyGtkSourceView2、PyGooCanvas、PyRsvg、gtk+-bundle 和 Glade。这绝对是能够成功import gobjectimport gtk 等所需的一切,而不会出现 DLL 问题。

【讨论】:

【参考方案3】:

对于 64 位 Windows 用户,请参阅

http://digitalpbk.blogspot.in/2012/03/installing-pygtk-pypango-and-pycairo-on.html

以上步骤将在 64 位上给出 Invalid DLL 错误。

【讨论】:

【参考方案4】:

你应该有 pygtk、pycairo、pygboject 和 gtk+ 运行时...

查看此内容以了解多合一安装程序 http://aruiz.typepad.com/siliconisland/2006/12/allinone_win32_.html

【讨论】:

【参考方案5】:

如果有人计划通过嵌入式解释器运行 PyGTK 并且 C/C++ 代码已经在使用 GTK,请小心安装 PyGTK 捆绑包。 PyGTK 捆绑包不会将其 GTK 运行时添加到 PATH。

在这种情况下,C 代码可能会从 PATH 中获取 GTK(因为您可能已经安装了 GTK 捆绑包),而 Python 将使用单独的 GTK 运行时库集。

因此,在我的情况下,C GUI 或 Python GUI 曾经正常运行,但在一起运行时会发生冲突。

由于我使用 Psychopy 作为我的基础 python 集合,为了解决这个问题,我刚刚在 Psychopy 之上安装了 PyGTK PyGTK、Pycairo、Pygobject。

除了只使用一组 GTK 运行时之外,在初始化 python 解释器之后,我还必须通过 PyGTK(而不是通过我的 C 代码中的 gtk_init (&argc, &argv))在我的 C 代码中初始化 GTK。

【讨论】:

以上是关于如何使用 Python 2.6 在 Windows 上安装 PyGTK / PyGobject?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上的 Python 2.6:如何使用“shell=True”参数终止 subprocess.Popen?

安装 Python sikuli 包(安装 pyjnius 的问题) Windows 7 Python 2.6

如果在windows下处理 python版本冲突问题?python 2.5和2.6版本冲突

使用 Python 2.6 设置全局热键

如何在 Python 中创建 GUID/UUID

Blender 2.6:通过 Python 按名称选择对象