misakamikodo / mhxy_script

梦幻西游手游脚本(基于pyautogui、opencv,在python环境下运行文件)
198 stars 68 forks source link

有个问题望大佬指点下 #21

Open YANKT opened 9 months ago

YANKT commented 9 months ago

我是做javaweb的,python对于深度学习方向比较熟悉,这种桌面应用没有经验。我尝试将python打包成exe,运行有问题,我用的anaconda虚拟环境,我猜测是环境没打进去?可以在readme讲解一下打包流程么,或者空闲时候做个Release版本。如果有需要我可以提供一些帮助。

misakamikodo commented 9 months ago

opencv打包不进去,之前有试过。 用了下面两个命令依然不行,。 pyinstaller --hidden-import cv2 --hidden-import numpy --onefile --noconsole mhxy_script.py pyinstaller --paths="E:\Program Files\anaconda3\lib\site-packages\cv2" --onefile --noconsole mhxy_script.py 而且这个包打出来还是很大的,三四百mb,感觉不太靠谱,之前在readme写过后来删了. 最近想着能不能直接把python环境嵌进去运行,窗口程序还没写好,行不行还不知道。

YANKT commented 9 months ago

问了下gpt,这是它给出的可能的解决方案

  1. 使用 --add-binary 选项 对于 OpenCV,可能需要手动指定一些二进制文件或动态链接库(.dll、.so、.dylib)来确保它们被正确包含。你可以使用 --add-binary 选项来添加这些文件。具体哪些文件需要添加取决于你的操作系统和OpenCV的安装方式。例如,对于 Windows,你可能需要添加类似以下的选项--add-binary="E:\Program Files\anaconda3\lib\site-packages\cv2\opencv_videoio_ffmpeg*.dll;."
  2. 使用 .spec 文件进行精细控制 PyInstaller 允许使用 .spec 文件来控制打包过程,提供了更多自定义选项。通过编辑 .spec 文件,你可以详细指定要包含的模块、路径、二进制文件等。首先,运行 PyInstaller 生成默认的 .spec 文件:pyinstaller --onefile --noconsole mhxy_script.py 这将生成一个 mhxy_script.spec 文件。然后,编辑这个文件,手动添加 cv2 相关的路径和二进制文件。你可以在 binaries 或 datas 列表中添加必要的文件。
  3. 检查依赖 使用工具如 depends.exe (Windows) 或 ldd (Linux) 来检查 OpenCV 二进制文件的依赖,确保所有必要的依赖库都被包括在内。
  4. 更新 PyInstaller 和 OpenCV 确保你使用的 PyInstaller 和 OpenCV 都是最新版本,因为新版本可能修复了以前版本的兼容性问题。
  5. 查找类似案例的解决方案 在线社区,如 Stack Overflow,可能有遇到类似问题并分享解决方案的用户。搜索与 PyInstaller 打包 OpenCV 相关的问题,看看是否有适用于你情况的解决方案。
  6. 使用 hook 文件 PyInstaller 允许使用 hook 文件来指示如何找到和包含难以自动发现的库。如果 PyInstaller 没有内置支持 OpenCV 的 hook 文件,你可能需要自己创建一个。