我已经为 py2exe 编写了一个 setup.py 脚本,为我的 python GUI 应用程序生成了一个可执行文件,并且我在 dist 目录中有一大堆文件,包括应用程序、w9xopen.exe 和 MSVCR71.dll。当我尝试运行该应用程序时,我收到一条错误消息,仅显示“有关详细信息,请参阅日志文件”。唯一的问题是,日志文件是空的。
我见过的最接近的错误是“以下模块似乎丢失了”,但据我所知我没有使用这些模块中的任何一个(特别是因为它们似乎是我没有使用的数据库)但在 Google 上进行挖掘表明这些是相对良性的警告。
我已经编写并打包了一个控制台应用程序以及一个带有 py2exe 的 wxpython 应用程序,并且这两个应用程序都已编译并成功运行。我正在使用一个名为 dabo 的新 python 工具包,它又使用 wxpython 模块,所以我无法弄清楚我做错了什么。我从哪里开始调查问题,因为显然日志文件不太有用?
编辑 1: python版本是2.5。 py2exe 是 0.6.8。没有重大的构建错误。唯一的一点是关于“以下模块似乎丢失了......”,这是非严重错误,因为列出的包是我绝对没有使用的包,也不应该停止应用程序的执行。运行可执行文件产生了一个完全空的日志文件。以前它有一个关于语言环境的错误,我已经修复了但显然有问题,因为可执行文件没有运行。 setup.py 文件很大程度上基于通过运行他们的“应用程序向导”并查看 Ed Leafe 和其他一些人发布的示例生成的原始 setup.py。是的,我有一个日志文件,但它没有打印任何内容供我使用,这就是为什么我想问是否还有其他我错过的故障排除途径,这将帮助我找出发生了什么。
我什至编写了一个基本的测试应用程序,它只生成一个基本的 GUI - 一个带有一些默认菜单选项的空框架。自己写的代码只有 3 行,其余的在 3rd 方工具包中。同样,它编译成一个 exe(就像我原来的应用程序一样)但根本没有运行。运行时日志文件中也没有错误输出。
编辑 2: 事实证明,出于初始调试目的从“windows”切换到“console”是很有见地的。我现在已经有了一个基本的运行测试应用程序,可以开始编译真正的应用程序了!
测试应用:
import dabo app = dabo.dApp() app.start()
测试应用的 setup.py:
import os import sys import glob from distutils.core import setup import py2exe import dabo.icons daboDir = os.path.split(dabo.__file__)[0] # Find the location of the dabo icons: iconDir = os.path.split(dabo.icons.__file__)[0] iconSubDirs = [] def getIconSubDir(arg, dirname, fnames): if ".svn" not in dirname and dirname[-1] != "\\": icons = glob.glob(os.path.join(dirname, "*.png")) if icons: subdir = (os.path.join("resources", dirname[len(arg)+1:]), icons) iconSubDirs.append(subdir) os.path.walk(iconDir, getIconSubDir, iconDir) # locales: localeDir = "%s%slocale" % (daboDir, os.sep) locales = [] def getLocales(arg, dirname, fnames): if ".svn" not in dirname and dirname[-1] != "\\": mo_files = tuple(glob.glob(os.path.join(dirname, "*.mo"))) if mo_files: subdir = os.path.join("dabo.locale", dirname[len(arg)+1:]) locales.append((subdir, mo_files)) os.path.walk(localeDir, getLocales, localeDir) data_files=[("resources", glob.glob(os.path.join(iconDir, "*.ico"))), ("resources", glob.glob("resources/*"))] data_files.extend(iconSubDirs) data_files.extend(locales) setup(name="basicApp", version='0.01', description="Test Dabo Application", options={"py2exe": { "compressed": 1, "optimize": 2, "bundle_files": 1, "excludes": ["Tkconstants","Tkinter","tcl", "_imagingtk", "PIL._imagingtk", "ImageTk", "PIL.ImageTk", "FixTk", "kinterbasdb", "MySQLdb", 'Numeric', 'OpenGL.GL', 'OpenGL.GLUT', 'dbGadfly', 'email.Generator', 'email.Iterators', 'email.Utils', 'kinterbasdb', 'numarray', 'pymssql', 'pysqlite2', 'wx.BitmapFromImage'], "includes": ["encodings", "locale", "wx.gizmos","wx.lib.calendar"]}}, zipfile=None, windows=[{'script':'basicApp.py'}], data_files=data_files )
最佳答案
您可能需要先修复日志处理,this网址可能有所帮助。
稍后您可能会寻找答案here .
我的回答很笼统,因为你没有提供任何更具体的信息(比如 py2exe/python 版本、py2exe 日志、其他使用的第 3 方库)。
关于python - py2exe打包问题排查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217666/