如何使用 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 gobject
、import 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