我在python中有一个使用dlib模块的代码,代码中的两行是
predictor_path = "./shape_predictor_68_face_landmarks.dat"
predictor = dlib.shape_predictor(predictor_path)
整个代码在python解释器中运行良好。当我尝试使用pyinstaller将其转换为可执行文件时,我将“ shape_predictor_68_face_landmarks.dat”文件名放在.spec文件的数据字段中即
a = Analysis(...
binaries=[],
datas=[("./shape_predictor_68_face_landmarks.dat", ".")]
...)
该过程完成,没有任何错误。 .dat文件也包含在该文件夹中。但是当我运行可执行文件时,它显示错误
RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat
[928] Failed to execute script new_run
...
如果将.dat文件放在.spec文件的二进制文件字段中,则在转换过程中会显示错误-
ValueError: Unknown Mach-O header: 0x01018188 in <_io.BufferedReader
name='/Users/mac/Library/Application
Support/pyinstaller/bincache00_py37_64bit/shape_predictor_68_face_landmarks.dat'>
我使用的是macOS和python 3.6,整个代码在python解释器中运行良好,但是在转换过程中会出现此问题。如何解决这个问题?
face_models = [
('venv\\Lib\\site-packages\\face_recognition_models\\models\\dlib_face_recognition_resnet_model_v1.dat', './face_recognition_models/models'),
('venv\\Lib\\site-packages\\face_recognition_models\\models\\mmod_human_face_detector.dat', './face_recognition_models/models'),
('venv\\Lib\\site-packages\\face_recognition_models\\models\\shape_predictor_5_face_landmarks.dat', './face_recognition_models/models'),
('venv\\Lib\\site-packages\\face_recognition_models\\models\\shape_predictor_68_face_landmarks.dat', './face_recognition_models/models'),
]
a = Analysis(['fac-rec.py'],
pathex=['C:\\Users\\Dell\\source\\python\\face-rec'],
binaries=face_models,
datas=[],
根据this帖子中的建议