python-3.x - PyInstaller .exe 因 console=false 而失败,但与 console=true 一起工作
问题描述
版本
- Python 3.8.6
- PyInstaller 4.1
我正在使用以下 .spec 文件并运行以下命令:
pyinstaller --onefile .\alvc.spec
这会导致一条错误消息显示“无法执行脚本 alvc”。但是,当我在 alvc.spec 的最后一行将控制台设置为 True 时,程序运行良好且符合预期。为什么会这样?我已经包含了我在程序中使用的唯一图像。它在 console=True 时运行良好,但在 console=False 时失败
alvc.spec
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['alvc.py'],
pathex=['C:\\Users\\My Name\\Documents\\Projects\\ALVC'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=True)
a.datas += [('expected.png','.\\expected.png', 'Data')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='ALVC',
debug=True,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False )
以下是我在程序启动失败时获得的调试日志:
00000001 0.00000000 [15680] [15680] PyInstaller Bootloader 3.x
00000002 0.00001890 [15680] [15680] LOADER: executable is C:\Users\My Name\Documents\Projects\ALVC\dist\ALVC.exe
00000003 0.00007430 [15680] [15680] LOADER: homepath is C:\Users\My Name\Documents\Projects\ALVC\dist
00000004 0.00011850 [15680] [15680] LOADER: _MEIPASS2 is NULL
00000005 0.00014800 [15680] [15680] LOADER: archivename is C:\Users\My Name\Documents\Projects\ALVC\dist\ALVC.exe
00000006 0.00028720 [15680] [15680] LOADER: Extracting binaries
00000007 10.96319771 [15680] [15680] LOADER: Executing self as child
00000008 10.96324253 [15680] [15680] LOADER: set _MEIPASS2 to C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802
00000009 10.96326160 [15680] [15680] LOADER: Setting up to run child
00000010 10.96327877 [15680] [15680] LOADER: Creating child process
00000011 10.96627712 [15680] [15680] LOADER: Waiting for child process to finish...
00000012 10.97176361 [9512] [9512] PyInstaller Bootloader 3.x
00000013 10.97179413 [9512] [9512] LOADER: executable is C:\Users\My Name\Documents\Projects\ALVC\dist\ALVC.exe
00000014 10.97181320 [9512] [9512] LOADER: homepath is C:\Users\My Name\Documents\Projects\ALVC\dist
00000015 10.97183800 [9512] [9512] LOADER: _MEIPASS2 is C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802
00000016 10.97185421 [9512] [9512] LOADER: archivename is C:\Users\My Name\Documents\Projects\ALVC\dist\ALVC.exe
00000017 10.97198582 [9512] [9512] LOADER: SetDllDirectory(C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802)
00000018 10.97200394 [9512] [9512] LOADER: Already in the child - running user's code.
00000019 10.97202206 [9512] [9512] LOADER: manifestpath: C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802\ALVC.exe.manifest
00000020 10.97214603 [9512] [9512] LOADER: Error activating the context: ActivateActCtx:
00000021 10.97214603 [9512] An attempt to set the process default activation context failed because the process default activation context was already set.
00000022 10.97214603 [9512]
00000023 10.97220516 [9512] [9512] LOADER: Python library: C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802\python38.dll
00000024 10.97579384 [9512] [9512] LOADER: Loaded functions from Python library.
00000025 10.97584057 [9512] [9512] LOADER: Manipulating environment (sys.path, sys.prefix)
00000026 10.97586727 [9512] [9512] LOADER: sys.prefix is C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802
00000027 10.97588348 [9512] [9512] LOADER: Pre-init sys.path is C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802\base_library.zip;C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802
00000028 10.97629261 [9512] [9512] LOADER: Setting runtime options
00000029 10.97631359 [9512] [9512] LOADER: Bootloader option: pyi-windows-manifest-filename ALVC.exe.manifest
00000030 10.97634602 [9512] [9512] LOADER: Initializing python
00000031 10.98469257 [9512] [9512] LOADER: Overriding Python's sys.path
00000032 10.98471069 [9512] [9512] LOADER: Post-init sys.path is C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802\base_library.zip;C:\Users\ABCQ~1\AppData\Local\Temp\_MEI156802
00000033 10.98477173 [9512] [9512] LOADER: Setting sys.argv
00000034 10.98478317 [9512] [9512] LOADER: setting sys._MEIPASS
00000035 10.98483467 [9512] [9512] LOADER: importing modules from CArchive
00000036 10.98490906 [9512] [9512] LOADER: extracted struct
00000037 10.98496056 [9512] [9512] LOADER: callfunction returned...
00000038 10.98512077 [9512] [9512] LOADER: extracted pyimod01_os_path
00000039 10.98513031 [9512] [9512] LOADER: callfunction returned...
00000040 10.98528385 [9512] [9512] LOADER: extracted pyimod02_archive
00000041 10.98537636 [9512] [9512] LOADER: callfunction returned...
00000042 10.98564434 [9512] [9512] LOADER: extracted pyimod03_importers
00000043 10.98570919 [9512] [9512] LOADER: callfunction returned...
00000044 10.98581219 [9512] [9512] LOADER: Installing PYZ archive with Python modules.
00000045 10.98584461 [9512] [9512] LOADER: PYZ archive: PYZ-00.pyz
00000046 10.98592854 [9512] [9512] LOADER: Running pyiboot01_bootstrap.py
00000047 10.99472523 [9512] [9512] LOADER: Running pyi_rth_multiprocessing.py
00000048 11.01906204 [9512] [9512] LOADER: Running pyi_rth_pkgres.py
00000049 11.08173752 [9512] [9512] LOADER: Running pyi_rth_mplconfig.py
00000050 11.08239174 [9512] [9512] LOADER: Running pyi_rth_certifi.py
00000051 11.08930683 [9512] [9512] LOADER: Running pyi_rth__tkinter.py
00000052 11.08956623 [9512] [9512] LOADER: Running alvc.py
00000053 16.43115425 [9512] [9512] LOADER: OK.
00000054 16.43121147 [9512] [9512] LOADER: Cleaning up Python interpreter.
00000055 16.44986916 [15680] [15680] LOADER: Back to parent (RC: -1)
00000056 16.44989967 [15680] [15680] LOADER: Doing cleanup
00000057 16.67538071 [15680] [15680] LOADER: Freeing archive status for C:\Users\My Name\Documents\Projects\ALVC\dist\ALVC.exe
解决方案
推荐阅读
- javascript - 如何获取容器元素的 CSS 宽度/高度?
- c# - 为什么我的新 WPF 窗口中的控件被冻结?
- typescript - 类型映射时泛型属性的问题
- python - 在 NLP 中训练数据集后如何预测标签
- c++ - 分段错误:从文件访问 csv 记录时核心转储
- php - Zend Framework 3 的队列管理器建议
- python - Python 多处理 pool.map 不能并行工作
- java - 如何扫描循环内的行并将其插入 ArrayList?
- ansible - Ansible:如何在 nmcli 模块中指定 ipv6.method?
- python - 有没有办法将 Excel csv 单元格从 yyyy 格式调整为 dd.mm.yyy 格式?