打包遇到的不兼容问题

img


打包后一直报错,程序是可以正常运行的,打包后报cv2与pyinstaller版本不兼容,降低过pyinstaller的版本,重新下过opencv-Python都不行,现在pyinstaller的版本是4.7,OpenCV是4.5.3.56,怎么解决呢

根据GPT的结果,帮你整理了一下思路,你看下是否有帮助:
这个问题可能是由于 PyInstaller 与 OpenCV 版本不兼容引起的。下面是一些可能的解决方案:

  1. 降低 PyInstaller 版本:尝试使用更旧的 PyInstaller 版本,例如 3.6 版本。某些版本的 PyInstaller 可能与特定的库不兼容,因此尝试降低版本可能有助于解决问题。

  2. 升级或降低 OpenCV 版本:尝试使用不同的 OpenCV 版本。您已经降低了 PyInstaller 版本,但可能还需要升级或降低 OpenCV 版本以与 PyInstaller 版本兼容。

  3. 使用 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')
  1. 使用虚拟环境:在一个独立的虚拟环境中重现环境,并确保您的依赖关系和库安装都正确无误。创建一个干净的虚拟环境,并在其中重新安装 OpenCV 和 PyInstaller,确保它们的版本兼容并正确安装。

  2. 查看 PyInstaller 的 GitHub 问题:检查 PyInstaller 的 GitHub 存储库,查看是否有与 OpenCV 版本兼容性相关的已知问题或解决方案。您可能会找到其他用户报告的类似问题和解决方法。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7770164
  • 你也可以参考下这篇文章:利用pyinstaller+python2.7+opencv3.4打包发布!
  • 除此之外, 这篇博客: pyinstaller打包OpenCV 报错中的 解决方案2 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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"
    
    

    路径那里去掉最后的那个文件名,保留整个文件夹。

    我建议使用第二种方案,因为这样可以不受版本的约束,并且以后遇到别的包出现这个问题,也能用类似的方法去解决。