问题
当你使用 pyinstaller 对含 Mediapipe 的相关项目打包时(以下方的打包代码为例):
pyinstaller --add-data ".venv/Lib/site-packages/mediapipe/modules/face_landmark/face_landmark_front_cpu.binarypb;./mediapipe/modules/face_landmark" -F -w -i logo.ico main.py
即便我们已经用 --add-data 但依旧无法导入 face_landmark_front_cpu.binarypb,这是因为 exe 文件运行时会在 "C:\Users\...\AppData\Local\Temp\" 的目录下创建一个 "_MEIXXXXXX" 文件夹。如果 C 盘有中文路径,则无法识别。
解决方案
有两种解决方案:
- 将用户名改为英文
- 强行修改 Mediapipe 源码,修改 face_landmark_front_cpu.binarypb 缩引为绝对路径。
第一种方法自行查找,第二种方法可行但很不推荐,但我仍会讲一下第二种方法(因为我没有看到其他回答提及,补充一下):