使用 pyinstaller 正常打包使用 face_recognition 的python程序会缺少模块或文件的错误。所以这里介绍一个打包方法解决此问题。
- 首先安装打包工具
pip install pyinstaller
- 使用命令直接打包
# 打包命令 pyinstaller -F main.py 使用该命令后会生成 .spec 文件(例如 main.spec) 和 dist 以及 build 文件夹。 * dist 文件夹中会存放打包后的文件
- 为了包含自定义引用文件需要修改spec文件
# -*- mode: python ; coding: utf-8 -*- import sys sys.setrecursionlimit(1000000) block_cipher = None # 手动打包的face_recognition模块,把face_recognition_models 复制到相同目录 # face_recognition_models 文件夹 一般所在目录在 C:\Users\用户名\AppData\Local\Programs\Python\Python38\Lib\site-packages\face_recognition_models 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'), ] # 此处填写需要包含的 .py 文件 a = Analysis(['main.py','test1.py','test2.py'], pathex=[], binaries=face_models, datas=[], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='main', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, entitlements_file=None )
- 现在可以使用命令重新打包,注意此时命令与上面有所区别!
pyinstaller -F main.spec
- 打包完成。