使用PyInstaller打包含fpdf2模块的Python程序时遇ModuleNotFoundError
解决PyInstaller打包fpdf2模块报错找不到'fpdf'的问题
问题分析
你安装的是fpdf2模块,但打包后报错提示找不到fpdf,核心原因是:
- 脚本中可能使用了
import fpdf的导入语句(fpdf2兼容旧版fpdf的导入方式,但PyInstaller无法自动识别这个别名关联) - 之前的打包命令指定了错误的隐藏导入目标(
fpdf而非实际安装的fpdf2)
解决方案
方案1:修改脚本导入语句(推荐)
将脚本里的import fpdf替换为:
import fpdf2 as fpdf
既保留原有代码的兼容性,又明确指向已安装的fpdf2模块,之后重新打包:
pyinstaller example.py --onefile
方案2:指定正确的隐藏导入参数
如果不想修改代码,打包时直接指定fpdf2作为隐藏导入:
pyinstaller example.py --onefile --hidden-import "fpdf2"
方案3:手动编辑spec文件配置
- 先生成spec文件:
pyinstaller example.py --onefile
- 打开生成的
example.spec文件,找到hiddenimports字段,修改为:
hiddenimports=['fpdf2'],
- 用spec文件重新打包:
pyinstaller example.spec
方案4:确认虚拟环境(若使用)
如果是在虚拟环境中开发,打包前务必激活对应虚拟环境,避免PyInstaller调用系统全局Python环境导致模块路径错误。
内容的提问来源于stack exchange,提问作者Subw00feR
相关产品推荐
相关产品推荐

