pygtk导入gtk错误

我下载了所有描述在pygtk安装。 一切都很好,直到当我试图键入"import gtk" ,它抛出一个ImportError如下:

 from gtk import _gtk ImportError: DLL load failed: ...(something unreadable) 

然后我再次重新安装pygtk-2.22.0,存在同样的问题。 那么请做什么? 提前致谢!

Solutions Collecting From Web of "pygtk导入gtk错误"

你所描述的错误通常是由python绑定(pygtk / pygobject / pycairo)无法加载它需要正常工作的dll引起的。 这些错误大部分是由以下原因造成的:

  • GTK +运行时不在您的PATH环境变量上。 这一直是如何让pygtk在Windows上工作的建议。 请不要更改您的用户或系统PATH环境变量,它不再需要使用一体化安装程序。
  • 多个GTK +运行时版本在您的PATH环境变量上,第一个(最左边的)版本与您使用的pygtk / pygobject / pycairo版本不兼容。 这就是为什么将GTK +运行时添加到PATH环境变量是一个坏主意:混合版本很容易(有时GTK +相关的安装程序会在包含较旧或不完整运行时的安装中将它们的bin目录添加到PATH中)。
  • 一些罕见的情况下,一些软件包将libintl.dll和iconv.dll安装到%WINDIR%\ system或%WINDIR%\ sytem32中

避免上述dll地狱最直接的方法是使用PyGTK一体化安装程序(http://download.gnome.org/binaries/win32/pygtk/2.22/)。 它包含Python绑定,GTK +运行时甚至Glade,不再需要您更改PATH环境变量。

小警告:如果您决定使用一体式安装程序,则必须卸载以前使用的单独的pygtk / pygobject / pycairo软件包(否则您将陷入麻烦的世界…)

阅读源代码,也许有需要一个特定版本的pygtk

编辑源代码以使用您的pygtk版本

我也有这个问题。 你在答案中没有提到,所以我会提出明显的(呃…很明显的人已经用了一段时间,也许)。 您是否使用以下三行代码导入? 你必须使用这些,才能导入PyGTK。

我假设你的版本是2.24像我的。 如果不是,请将其更改为您拥有的版本。

 import pygtk pygtk.require('2.24') import gtk 

这应该足以导入gtk。

问题

正如其他人所指出的,不要把gtk放在路径上。 我知道,它是诱人的,它对XYZ起作用,但它(至少可以说)变得混乱。 在像Linux这样的平台上依赖地狱已经够糟糕的了,它试图让你更容易。

为了说明一下,PyGTK All In One为你做的是在你的python软件包文件夹中直接安装(看起来像)一个完整的gtk +运行库,例如在C:\ Python \ Lib \ site-packages \ gtk-2.0 \运行

注意 :%YOURPYTHONPATH%是一个EXAMPLE变量,它包含Python安装的路径(例如C:\ Python或者C:\ Python27,或者其他任何实际的东西)。 我建议设置%PYTHON_DIR%或%PYTHON_PATH%如果你想使用一个变量来做到这一点,因为更多的程序可能会使用这个。

为了让你的XYZ程序需要GTK工作,在运行你的程序时将%YOURPYTHONPATH% \ Lib \ site-packages \ gtk-2.0 \ runtime \ bin添加到PATH中; 它需要链接的正确版本的DLL是在该文件夹中。 我安装的所有其他GTK +运行时(GTK + / GTK2-Runetime)给了我错误。

再次; 不要试图设置一个用户或系统级别的变量(不要打开下面的对话框),因为这可能会给你带来问题,除非你很确定你知道你在做什么。 如果你正在读这篇文章,你很可能不会像你所想的那样知道。 相反,请在cmd提示符中更改路径,或者使用批处理/脚本文件为您设置它。

进入Windows环境变量对话框

安装pygtk.org软件包后,按以下顺序安装每个软件包:

  • pycairo-1.8.6.win32-py2.6.exe
  • pygobject-2.20.0.win32-py2.6.exe
  • pygtk的-2.16.0 + glade.win32-py2.6.exe
  • GTK + -bundle_2.16.6-20100912_win32.zip

了解更多信息:

http://freetstar.com/windows7-pygtk-gtk/

我根据个人电脑上的链接得到了这些信息。