使用Py2exe创建exe后出错

2 投票
1 回答
2150 浏览
提问于 2025-04-16 07:51

Py2exe运行得还不错,不过它提到可能缺少一些模块。

我之前在我的py2exe脚本中使用了windows选项,这样可以去掉控制台窗口,但我发现即使我关闭了图形界面窗口,进程还是会保持打开状态,也就是说我在任务管理器里还能看到这个进程……所以我改用了控制台选项,结果在控制台里看到了下面的错误信息。我觉得这个错误导致了应用程序无法关闭。除此之外,应用程序运行得还不错。

我尝试从一个非常简单的wxPython图形界面应用程序创建exe文件,但即使这样我也还是遇到了这个错误。不过,我从不包含wxPython的应用程序创建可执行文件时没有问题。

Debug: src/helpers.cpp(140): 'createActCtx' failed with error 0x0000007b (the filename, directory name, or volume label syntax is incorrect.).)

alt text

Python: 2.6.6

wxPython: 2.8.11.0

Windows 7

py2exe: 0.6.9

# -*- coding: utf-8 -*-


from distutils.core import setup
import py2exe
import glob



excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
            'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
            'Tkconstants', 'Tkinter']

dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 'tk84.dll',]#'msvcp90.dll']

packages = []#'wx.lib.pubsub']


data_files = [("resources", ['resources/1187958_90214884.jpg'])]
packages = ['wx.lib.pubsub',]
options = {'py2exe': {'compressed': 3,
                          'optimize': 2,
                          'excludes': excludes,
                          'packages': packages,
                          'dll_excludes': dll_excludes,
                          'bundle_files': 1,
                          'dist_dir': 'dist',
                          'xref': False,
                          'skip_archive': False,
                          'ascii': False,
                          'packages': packages,
                        'custom_boot_script': '',
                         }
                }  

#windows=[{'script':'gui.py'}]


for script in ["gui.py"]:
    windows=[{
        'script':[script]
    }]

    setup(options=options, console=[script], zipfile=None, data_files=data_files)                        

1 个回答

2

我在用py2exe把wxPython代码编译成exe文件时,几乎没有遇到什么麻烦。你可以试试我这里的教程:

http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/

不过,我在使用2.8.11.0版本的新pubsub时遇到了一些问题。你可以在这里查看相关讨论:http://bit.ly/emoHEr

最后,我那天还是把wx的版本换回了之前的,因为我没时间去弄清楚自己哪里出错了。不过我不确定这是不是你遇到的问题。

撰写回答