我正在尝试使用Py2Exe构建我的第一个应用程序,并按照http://www.py2exe.org/index.cgi/Py2exeAndPyGTK中列出的说明进行操作,但我使用Glade创建UI。(它只是一个非常简单的带有关闭按钮和标签的GUI。)
当我尝试运行生成的exe文件时,会弹出一个错误对话框要求我检查日志文件,其中包含以下错误消息:
如果我尝试将glib模块手动添加到setyp.py中的“includes”选项中,它没有任何效果。
进一步挖掘后,我使用Dependency Walker打开生成的exe文件,它告诉我有两个dll文件缺失,MPR.DLL和SHLWAPI.DLL,但这两个文件都在我的system32文件夹中。
如果我只是创建UI而不使用glade,我就没有任何问题,但考虑到我已经用glade创建了另一个应用程序,如果可能的话,我想坚持使用glade。您对接下来该怎么做有什么建议吗?我在Windows XP上使用Python 2.7、Py2Exe 0.6.9、PyGtk 2.22.6。
谢谢, Brent
当我尝试运行生成的exe文件时,会弹出一个错误对话框要求我检查日志文件,其中包含以下错误消息:
Traceback (most recent call last):
File "pygtkpy2exetest.py", line 8, in <module>
File "gtk\glade.pyc", line 12, in <module>
File "gtk\glade.pyc", line 10, in __load
ImportError: DLL load failed: The specified module could not be found.
我开始进行一些调查,首先注意到的是py2exe似乎无法找到glib模块:
The following modules appear to be missing
['gdk', 'unix', 'glib.GError', 'glib.IOChannel', 'glib.IO_ERR', 'glib.IO_FLAG_APPEND', 'glib.IO_FLAG_GET_MASK', 'glib.IO_FLAG_IS_READABLE', 'glib.IO_FLAG_IS_SEEKABLE', 'glib.IO_FLAG_IS_WRITEABLE', 'glib.IO_FLAG_MASK', 'glib.IO_FLAG_NONBLOCK', 'glib.IO_FLAG_SET_MASK', 'glib.IO_HUP', 'glib.IO_IN', 'glib.IO_NVAL', 'glib.IO_OUT', 'glib.IO_PRI', 'glib.IO_STATUS_AGAIN', 'glib.IO_STATUS_EOF', 'glib.IO_STATUS_ERROR', 'glib.IO_STATUS_NORMAL', 'glib.Idle', 'glib.MainContext', 'glib.MainLoop', 'glib.OPTION_ERROR', 'glib.OPTION_ERROR_BAD_VALUE', 'glib.OPTION_ERROR_FAILED', 'glib.OPTION_ERROR_UNKNOWN_OPTION', 'glib.OPTION_FLAG_FILENAME', 'glib.OPTION_FLAG_HIDDEN', 'glib.OPTION_FLAG_IN_MAIN', 'glib.OPTION_FLAG_NOALIAS', 'glib.OPTION_FLAG_NO_ARG', 'glib.OPTION_FLAG_OPTIONAL_ARG', 'glib.OPTION_FLAG_REVERSE', 'glib.OPTION_REMAINING', 'glib.OptionContext', 'glib.OptionGroup', 'glib.PRIORITY_DEFAULT', 'glib.PRIORITY_DEFAULT_IDLE', 'glib.PRIORITY_HIGH', 'glib.PRIORITY_HIGH_IDLE', 'glib.PRIORITY_LOW', 'glib.Pid', 'glib.PollFD', 'glib.SPAWN_CHILD_INHERITS_STDIN', 'glib.SPAWN_DO_NOT_REAP_CHILD', 'glib.SPAWN_FILE_AND_ARGV_ZERO', 'glib.SPAWN_LEAVE_DESCRIPTORS_OPEN', 'glib.SPAWN_SEARCH_PATH', 'glib.SPAWN_STDERR_TO_DEV_NULL', 'glib.SPAWN_STDOUT_TO_DEV_NULL', 'glib.Source', 'glib.Timeout', 'glib.child_watch_add', 'glib.filename_display_basename', 'glib.filename_display_name', 'glib.filename_from_utf8', 'glib.get_application_name', 'glib.get_current_time', 'glib.get_prgname', 'glib.glib_version', 'glib.idle_add', 'glib.io_add_watch', 'glib.main_context_default', 'glib.main_depth', 'glib.markup_escape_text', 'glib.set_application_name', 'glib.set_prgname', 'glib.source_remove', 'glib.spawn_async', 'glib.timeout_add', 'glib.timeout_add_seconds', 'glib.uri_list_extract_uris']
如果我尝试将glib模块手动添加到setyp.py中的“includes”选项中,它没有任何效果。
进一步挖掘后,我使用Dependency Walker打开生成的exe文件,它告诉我有两个dll文件缺失,MPR.DLL和SHLWAPI.DLL,但这两个文件都在我的system32文件夹中。
如果我只是创建UI而不使用glade,我就没有任何问题,但考虑到我已经用glade创建了另一个应用程序,如果可能的话,我想坚持使用glade。您对接下来该怎么做有什么建议吗?我在Windows XP上使用Python 2.7、Py2Exe 0.6.9、PyGtk 2.22.6。
谢谢, Brent
libxml2-2.dll
,这对我有用。奇怪的是,它在没有MSJAVA.DLL
的情况下也可以正常运行。 - ashastral