我以前只使用过一次 PyInstaller,它与 wxPython 一起工作非常简单。不过,我目前正在尝试构建一个不同的项目。从命令行运行时,该项目运行良好。然而,在它构建之后,它永远不会启动主窗口(wxPython)。
我在构建规范中将调试和控制台标志设置为 True。我还添加[('v', '', 'OPTION')]
了 PyInstaller 手册中指定的详细选项 ( )。这是规格:
# -*- 模式:python -*- # basedir = os.path.realpath(os.path.dirname(__file__)) basedir = os.getcwd() # 构建图标 toc. 图标目录 = [] 对于 os.walk(os.path.join(basedir, 'icons')) 中的目录: 对于 dir[2] 中的图标: icons_toc.append( ( os.path.join('icons', icon), os.path.join(dir[0], 图标), '数据', ) ) 一=分析( ['应用程序.py'], pathex=['.', './lib', '../broadpy/lib', '../broadpy/vendor'], 隐藏进口=[], hookspath=无 ) a.datas += icons_toc pyz = PYZ(a.pure) 执行程序 = 执行程序( 皮兹, a.scripts + [('v', '', 'OPTION')], a.二进制文件, a.zip 文件, a.数据, 名称=os.path.join( 'dist', '地址清洁器.exe' ), 调试=真, 条=无, upx=真, 控制台=真 ) 应用程序=捆绑( 可执行程序, name=os.path.join('dist', '地址清理器.app') )
现在,当我运行构建的可执行文件时,我得到以下输出:
C:\Users\tomas\Dropbox\Broadnet\address_cleaner>"C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe" _MEIPASS2 为 NULL 存档名称是 C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe 提取二进制文件 通过设置运行孩子执行自我作为孩子 创建子进程 等待子进程完成... _MEIPASS2 是 C:/Users/tomas/AppData/Local/Temp/_MEI30762/ 存档名称是 C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe 已经在孩子 - 运行! 清单路径:C:/Users/tomas/AppData/Local/Temp/_MEI30762/Address cleaner.exe.manifest 创建的激活上下文 激活上下文已激活 C:/Users/tomas/AppData/Local/Temp/_MEI30762/python27.dll 操纵环境 PYTHONPATH=C:/Users/tomas/AppData/Local/Temp/_MEI30762;C:/Users/tomas/Dropbox/Broadnet/address_cleaner/dist PYTHONHOME=C:/Users/tomas/AppData/Local/Temp/_MEI30762/ v # 安装 zipimport 钩子 导入 zipimport # 内置 # 安装 zipimport 钩子 从 CArchive 导入模块 导入元帅#内置 提取iu 导入 imp # 内置 导入 nt # 内置 提取结构 导入 _struct # 内置 提取档案 安装导入钩子 out00-PYZ.pyz 运行脚本 导入 zlib # 内置 导入 errno # 内置 导入 _weakref # 内置 导入 _codecs # 内置 导入 _sre # 内置 导入 _collections # 内置 导入运算符#内置 导入 itertools # 内置 导入 _bisect # 内置 导入 _heapq # 内置 导入线程#内置 导入数学#内置 导入 binascii # 内置 import _hashlib # 从 C:\Users\tomas\AppData\Local\Temp\_MEI30762\_hashlib.pyd 动态加载 导入 _random # 内置 导入 cStringIO # 内置 回溯(最近一次通话最后): 文件“”,第 65 行,在 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 386 行,在 importHook 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 480 行,在 doimport 文件“C:\Users\tomas\Dropbox\Broadnet\address_cleaner\build\pyi.win32\buildspec\out00-PYZ.pyz\win32com”,第 5 行,在 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 386 行,在 importHook 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 459 行,在 doimport 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 248 行,在 getmod 文件“C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py”,第 105 行,在 getmod ImportError:DLL 加载失败:找不到指定的模块。 RC:来自 pyi_rth_win32comgenpy 的 -1 好的。 停用激活上下文 释放激活上下文 完毕 # 清除 __builtin__._ # 清除 sys.path # 清除 sys.argv # 清除 sys.ps1 # 清除 sys.ps2 # 清除 sys.exitfunc # 清除 sys.exc_type # 清除 sys.exc_value # 清除 sys.exc_traceback # 清除 sys.last_type # 清除 sys.last_value # 清除 sys.last_traceback # 清除 sys.path_hooks # 清除 sys.path_importer_cache # 清除 sys.meta_path # 清除 sys.flags # 清除 sys.float_info # 恢复 sys.stdin # 恢复 sys.stdout # 恢复 sys.stderr # 清理 __main__ # 清理[1] cStringIO # 清理[1] __future__ # 清理[1] _collections # cleanup[1] 编码 # 清理 [1] 站点 # 清理[1] atexit # 清理[1] 关闭 # 清理[1] _heapq # 清理[1] _weakref # 清理[1] abc # 清理[1] _bisect # 清理[1] _weakrefset # cleanup[1] 临时文件 # 清理[1] binascii # 清理[1] sre_constants # cleanup[1] 集合 # 清理[1] _codecs # 清理[1] _warnings # cleanup[1] 数学 # cleanup[1] 运算符 # 清理[1] fnmatch # cleanup[1] 编解码器 # 清理 [1] 重新 # 清理[1] _struct # cleanup[1] 线程 # cleanup[1] 关键字 # cleanup[1] 信号 # 清理[1] 随机 # 清理[1] 迭代工具 # cleanup[1] encodings.aliases # cleanup[1] 异常 # cleanup[1] heapq # 清理[1] sre_compile # 清理[1] _sre # 清理[1] _random # 清理[1] 哈希库 # cleanup[1] 平分 # 清理[1] sre_parse # 清理[1] _hashlib # 清理[2] copy_reg # 清理[2] iu # 清理[2] os.path # cleanup[2] 存档 # cleanup[2] 结构体 # 清理[2] 错误号 # 清理[2] 小鬼 # 清理[2] _abcoll # 清理[2] ntpath # 清理[2] nt # cleanup[2] 通用路径 # 清理[2] 统计 # 清理[2] zipimport # cleanup[2] 警告 # 清理[2] 用户字典 # 清理[2] 类型 # 清理[2] zlib # 清理[2] 行缓存 # 清理[2] 操作系统 # cleanup[2] 元帅 # 清理系统 # 清理 __builtin__ # 清理整数:41 个未释放的整数 # 清理浮动:31 个未释放的浮动 回到父... C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe 的释放状态
所以现在我看到 iu.py 提出了一个异常,但我仍然不知道为什么。我还发现运行我的 Downloads/py-installer 文件夹中的 python 文件非常神秘,即使我删除了该文件夹。
所以总结一下 - 我必须采取哪些步骤来弄清楚应用程序在启动时崩溃的确切原因?
我在 Windows 8 上使用 PyInstaller 2.0 和 Python 2.7.3。这些事实都不会导致这个错误,因为我正在成功构建另一个项目。