根据GPT的结果,帮你整理了一下思路,你看下是否有帮助:
这个问题可能是由于 PyInstaller 与 OpenCV 版本不兼容引起的。下面是一些可能的解决方案:
降低 PyInstaller 版本:尝试使用更旧的 PyInstaller 版本,例如 3.6 版本。某些版本的 PyInstaller 可能与特定的库不兼容,因此尝试降低版本可能有助于解决问题。
升级或降低 OpenCV 版本:尝试使用不同的 OpenCV 版本。您已经降低了 PyInstaller 版本,但可能还需要升级或降低 OpenCV 版本以与 PyInstaller 版本兼容。
使用 PyInstaller 的 hooks 文件:对于某些库,PyInstaller 需要提供特定的 hooks 文件以正确处理其依赖关系。尝试创建一个名为 "hook-cv2.py" 的文件,并将其放置在 PyInstaller 的 hooks 目录中,内容为:
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
# Add cv2 data files and submodules
datas = collect_data_files('cv2')
hiddenimports = collect_submodules('cv2')
使用虚拟环境:在一个独立的虚拟环境中重现环境,并确保您的依赖关系和库安装都正确无误。创建一个干净的虚拟环境,并在其中重新安装 OpenCV 和 PyInstaller,确保它们的版本兼容并正确安装。
查看 PyInstaller 的 GitHub 问题:检查 PyInstaller 的 GitHub 存储库,查看是否有与 OpenCV 版本兼容性相关的已知问题或解决方案。您可能会找到其他用户报告的类似问题和解决方法。
PS:这种方法我试了几次没成功
import cv2
print(cv2.__file__)
执行这两句话,找到CV2所在的路径:
D:\anaconda\64\lib\site-packages\cv2\cv2.cp38-win_amd64.pyd
这是我的路径
然后再打包的时候:
pyinstaller -F -w --key '12345678' --clean main.py --paths="D:\anaconda\64\lib\site-packages\cv2"
路径那里去掉最后的那个文件名,保留整个文件夹。
我建议使用第二种方案,因为这样可以不受版本的约束,并且以后遇到别的包出现这个问题,也能用类似的方法去解决。