PyInstaller打包含PyGithub的Python脚本报_cffi_backend缺失如何解决
问题根因
报错ModuleNotFoundError: No module named '_cffi_backend'的核心原因是:PyGithub依赖的PyNaCl加密库底层调用了cffi库的C扩展模块,PyInstaller自动依赖检测机制无法识别到这个隐式导入的模块,导致打包时未将该模块整合进exe文件。
解决方案
方法一:直接修改打包命令(最便捷)
在原有打包命令中添加--hidden-import参数手动指定需要导入的缺失模块即可,命令如下:
pyinstaller --onefile --icon='icon.ico' --hidden-import _cffi_backend dmi.py
方法二:通过spec文件配置(适合多缺失模块场景)
如果后续还会出现其他隐式导入缺失问题,推荐用spec文件统一管理打包配置:
- 先执行命令生成配置文件:
pyi-makespec --onefile --icon='icon.ico' dmi.py - 打开生成的
dmi.spec文件,找到hiddenimports配置项,修改为:hiddenimports=['_cffi_backend'] - 基于配置文件执行打包:
pyinstaller dmi.spec
前置校验
如果按上述方法操作后仍报错,先执行如下命令将相关依赖升级到最新兼容版本后再重新打包:
pip install --upgrade cffi pynacl pygithub
按以上方法打包后的exe即可正常运行PyGithub的获取仓库文件列表、提交文件更改等功能。
内容的提问来源于stack exchange,提问作者Ifan_Ifan
相关产品推荐
相关产品推荐

