无法导入模块

时间:2011-07-07 14:09:28

标签: python pygtk py2exe

我想学习Python,因为它看起来不错,我想和GTK一起工作。我以前的编程经验是Java和C#,在处理错误方面几乎不会感到痛苦。但是我遇到pythons py2exe的问题,并了解如何调试此问题。根据我的理解,它可能是与版本类型和文件位置有关的设置错误,而不是代码。

我正在运行

  • Windows 7 64位
  • Python版本2.7.2 - 32位
  • pygtk的-所有功能于一2.24.0.win32-py2.7
  • py2exe-0.6.9.win32-py2.7

所有超链接都可以在http://pastebin.com/MNGPQVMP看到。这是因为Stackoverflow只允许我发布2个链接,但我有很多信息!

我的问题是python执行我的基本代码没问题,但是发生了使用py2exe错误。

产生错误我跑

python setup.py py2exe

在列表中有python文件,exe错误日志和控制台输出

  • PyApp.py>见主链接
  • setup.py>见主链接
  • PyApp.exe.log>见主链接
  • 运行py2exe的控制台输出>见主链接

我跑了一些额外的信息

python -m py2exe.mf -d PyApp.py 
python -m py2exe.mf -d setup.py

两个命令的输出列在下面

  • python -m py2exe.mf -d PyApp.py>见主链接
  • python -m py2exe.mf -d setup.py>见主链接
从我从exe错误日志和控制台输出中可以理解的是,它无法导入gio(是glib的那部分吗?)。额外的模块列表指出了其他错误。

PyApp.py模块升级的gio错误指向\ Python27 \ lib \ site-packages \ gtk-2.0 \ glib \ _ init _。py此文件包含

enter from glib._glib import *
_PyGLib_API = _glib._PyGLib_API
del _glib here

所以看起来有些东西可能会丢失。但是我不太确定

那么如何解决此导入错误?

另外作为附注,Dependency Walker也表示缺少2个Windows dll。 http://localhostr.com/files/Gf1mXT3/Dependency_Walker..png 我有DLL,但它们是64位而不是32位,如果我将它们放在目录中,那么Dependency Walker会标记64位错误,但此刻它显然不是问题。

这是一个受欢迎的问题,但我似乎无法解决如何使用我所获得的信息来修复它。

1 个答案:

答案 0 :(得分:1)

很容易修复!在你的setup.py文件中,你应该有这样的行:

options = {
                  'py2exe': {
                      'packages':'encodings',
                      'includes': '<module names>',
                  }
              },

要修复错误,只需将“gio”添加到“包含”列表中,如下所示:

options = {
                  'py2exe': {
                      'packages':'encodings',
                      'includes': 'gio',
                  }
              },

我有一个用pyGTK构建的程序,所以我需要导入一些模块。仅供参考,该代码看起来像我的:

options = {
                  'py2exe': {
                      'packages':'encodings',
                      'includes': 'cairo, pango, pangocairo, atk, gobject, gio, subprocess',
                  }
              },