首页 > 解决方案 > PyInstaller .exe 因 console=false 而失败,但与 console=true 一起工作

问题描述

版本

  1. Python 3.8.6
  2. 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   

标签: python-3.xpyinstallerpython-3.8

解决方案


推荐阅读