用pyinstaller将.py转换为.exe后缺少模块

时间:2019-12-11 08:18:35

标签: python module exe pyinstaller

我正在使用pyinstaller.py转换为.exe,但是转换后,当我运行.exe时,会弹出命令行窗口,瞬间关闭。 .exe几乎完全无法运行,然后我导航到warn.txt文件,它说有很多缺少的模块:

missing module named resource
missing module named posix
missing module named _posixsubprocess
missing module named cv2

并分配更多(总共 24个

我已经研究了这个问题,并且尝试使用--onefile--onedir进行转换而无法得到一个好的答案。

如何导入或修复这些丢失的模块,以使 .exe 正确运行,甚至完全运行?

1 个答案:

答案 0 :(得分:0)

尝试制作一个规格文件,并对缺少的模块使用hidden_​​imports:

# -*- mode: python -*-
import sys
sys.setrecursionlimit(5000)

block_cipher = None
a = Analysis(['src\\main.py'],
         pathex=['your_path_text'],
         binaries=[],
         datas=[],
         hiddenimports=['cv2','your_missing_modules...],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='main',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='main')

然后运行pyinstaller main.spec