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

Python 使用pyinstaller将.py转换为.exe后缺少模块,python,module,exe,pyinstaller,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个) 我已经研究了这个问题,但没有得到

我正在使用
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
能够正确运行,甚至根本无法运行?

尝试创建一个规范文件,并对缺失的模块使用隐藏导入:

# -*- 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

,所以我需要用您提供的确切内容创建一个.spec文件,然后在.spec文件上运行pyinstaller?不是.py文件如果运行pyinstaller,它会自动生成一个spec文件。只需打开自动生成的一个,并将缺少的模块写入隐藏导入。然后在spec文件上运行pyinstaller。关于详细的解释,请看:好的,我这样做了,而且效果不错,因此,现在当我运行.exe文件时,命令行会出现较长的时间,就像代码正在运行一样,但是在命令行中出现了一瞬间文本,然后关闭,我能够在正确的时间获得一个屏幕截图,这是因为
ModuleNotFoundError没有名为cv2的模块导入cv2,这是否意味着我需要将所有这些导入模块(如
cv2、configparser、time
)安装到.exe的安装目录中?是否在隐藏导入中指定了cv2?你能发布错误堆栈吗?如果您通过命令行运行.exe,它不会关闭,您有时间制作屏幕截图。
回溯(最近一次调用最后一次):文件“face detect.py”,ModuleNotFoundError中的第1行:没有名为“cv2”[11448]的模块无法执行脚本测试
,是的,我将cv2添加到了hiddenimports中。