【问题标题】:No module named pygtk in Python 2.7 (win 32) but it's definitely installedPython 2.7(win 32)中没有名为 pygtk 的模块,但它肯定已安装
【发布时间】:2015-05-10 09:29:44
【问题描述】:

我已经从命令行混合使用 setup.py install 和 pip install 安装了许多 python 包。我可以成功地将所有这些导入 IDLE。我正在运行 Python 2.7.9(win64 机器上的 win32)。

我使用 pip install 安装了 pygtk 2.22——与大约六个其他软件包完全相同。但我现在无法将其导入 IDLE(导入 pygtk 全部小写)并得到典型的“没有名为 pygtk 的模块”错误。我使用 pip.get_installed_distributions() 检查并列出了它。

有什么帮助吗?

【问题讨论】:

  • 您的gtk-* 文件夹和pygtk.py 文件在哪里?

标签: python python-2.7


【解决方案1】:

好的,我想我有一个解决方案供任何人寻找获取 pygtk 的方法:

http://www.www.pygtk.org 获取可执行文件(我之前使用了来自http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip 的whl - 这些大部分看起来都不错,但在这种情况下对我来说没有运气)。我使用pygtk-2.24.0.win32-py2.7.exe来匹配我的系统。

遵循 FLIR31207 关于添加到系统路径的出色说明。对我来说这是:

import sys
sys.path.append("C:\Python27\Lib\site-packages\gtk-2.0")

import pygtk 仍然会抛出一个错误,但会抛出一个不同的错误(我现在无法重现,因为我已修复它)。像缺少 pygobject 之类的东西。

原来 pygtk 有依赖关系。返回 pygtk.org 以获取 PyCairo 和 PyGObject 可执行文件并安装它们。

导入 pygtk 并没有错误。我想就是这样。谢谢 FLIR31207!

【讨论】:

    【解决方案2】:

    如果你用import modulexyz 导入一个模块,Python 会在里面搜索一个名为modulexyz 的文件

    • 当前文件夹
    • sys.path 中的所有文件夹

    如果pygtk.py 不在其中之一,则无法使用简单的import pygtk 导入。我建议执行以下操作:

    • 运行python
    • 在这个交互式 Python 会话中运行
      • import sys
      • print sys.path

    这将打印 Python 将在其中查找模块的(长)文件夹列表;如果在其中一个中找不到 pygtk.py,您可以在导入模块之前将其添加到 sys.path

    import sys
    sys.path.append(folder_where_pygtk.py_is_located)
    import pygtk
    

    【讨论】:

    • 感谢 FLIR31207。恐怕我还是有问题: sys.path.append("C:\Python27\Lib\site-packages\pygtk-2.22.0-py2.7") 没问题。注意到 sys.path 中的许多其他模块也有一个 .egg 后缀,我也添加了它。仍然没有喜悦——同样的缺失模块错误。无论如何,我正在反转并尝试使用来自pygtk.org 的可执行文件。这引发了一些其他问题(很可能是用户错误),因此如果您对此有任何其他想法,我们将不胜感激。