0%

Python3.9 Pyinstaller 打包Face_Recognition程序

问题

直接使用pyinstaller -F find.py 进行打包,之后运行exe会报错,报错内容为:RuntimeError: Unable to open C:\Users\pc\AppData\Local\Temp_MEI70802\face_recognition_models\models\shape_predictor_68_face_landmarks. dat
pic

解决

这个错误的意思是无法找到face_recognition的模型文件,那么我们需要去face_recognition找到对应的模型文件的真实地址,此时需要修改spec文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- mode: python -*-

block_cipher = None

face_models = [
('.\\face_recognition_models\\models\\dlib_face_recognition_resnet_model_v1.dat', './face_recognition_models/models'),
('.\\face_recognition_models\\models\\mmod_human_face_detector.dat', './face_recognition_models/models'),
('.\\face_recognition_models\\models\\shape_predictor_5_face_landmarks.dat', './face_recognition_models/models'),
('.\\face_recognition_models\\models\\shape_predictor_68_face_landmarks.dat', './face_recognition_models/models'),
]

# 以上四个模型文件需要找到本机的真实地址后,再放入到对应位置,比如此时我的windows下的模型文件地址为:
# C:\\Users\\pc\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\site-packages\\face_recognition_models\\models\\dlib_face_recognition_resnet_model_v1.dat
# 将上面的地址分别放入到四个模型文件对应的地址中,此时在打包exe时,就可以正常运行了

a = Analysis(['find.py'], # 自己的python文件名
pathex=['C:\\Users\\pc\\Desktop\\test'], # python文件路径
binaries=face_models,
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)

pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='find', # 文件名,不带后缀
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )

修改好spec文件后,继续执行 pyinstaller find.spec 命令重新尝试打包。