使用PyInstaller打包含MediaPipe的Python虚拟鼠标为exe的依赖问题
解决MediaPipe依赖打包进EXE的问题
方法1:用PyInstaller的--add-data参数手动指定依赖
找到你本地MediaPipe的solutions目录路径(即C:\Users\hchap\AppData\Local\Programs\Python\Python310\Lib\site-packages\mediapipe\python\solutions),在打包命令里加上--add-data参数,把该目录下的文件同步打包到EXE对应的路径中:
pyinstaller --onefile --add-data "C:\Users\hchap\AppData\Local\Programs\Python\Python310\Lib\site-packages\mediapipe\python\solutions;mediapipe/python/solutions" 你的脚本文件名.py
Windows系统下用分号分隔源路径和目标路径,打包后EXE运行时就能找到这些依赖文件。
方法2:通过PyInstaller spec文件自定义配置
- 先生成基础spec文件:
pyinstaller --name virtual_mouse 你的脚本文件名.py
- 打开生成的
virtual_mouse.spec,找到datas字段,添加MediaPipe的solutions目录配置:
datas = [ ('C:\\Users\\hchap\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages\\mediapipe\\python\\solutions', 'mediapipe/python/solutions') ]
- 用spec文件重新打包:
pyinstaller virtual_mouse.spec
方法3:完整打包MediaPipe目录(兜底方案)
如果还是有依赖缺失,直接把整个MediaPipe包打包进去,确保所有相关文件都被包含:
pyinstaller --onefile --add-data "C:\Users\hchap\AppData\Local\Programs\Python\Python310\Lib\site-packages\mediapipe;mediapipe" 你的脚本文件名.py
另外要注意,脚本里读取MediaPipe相关文件时,尽量不要用绝对路径,改用相对路径或者通过os.path.dirname(sys.executable)获取EXE所在目录,再拼接依赖文件路径,避免路径适配问题。
内容的提问来源于stack exchange,提问作者Hchap
相关产品推荐
相关产品推荐

