使用xhtml2pdf打包为exe后报No module named 'reportlab.graphics.barcode.code128'求助
报错原因
这个报错是Python打包工具的依赖收集逻辑导致的:终端直接运行代码时,Python会自动扫描安装路径下的所有可用模块,只要依赖安装正常就能正常调用;但PyInstaller、Nuitka等打包工具为了减小最终可执行文件体积,只会收集明确被导入的模块,reportlab.graphics.barcode.code128属于reportlab的子模块,通常是动态调用的,打包工具检测不到导入关系就会漏掉该模块,导致运行可执行文件时报错。
解决方法
方法1(通用,无需修改打包配置)
直接在你的业务代码最顶部手动添加一行导入语句,让打包工具能识别到该依赖:
import reportlab.graphics.barcode.code128
修改后重新打包即可。
方法2(修改打包参数,适配不同打包工具)
如果你不想修改业务代码,可以根据你使用的打包工具调整打包配置:
- 若使用PyInstaller:打包命令追加
--hidden-import reportlab.graphics.barcode.code128参数,示例命令:pyinstaller -F your_script.py --hidden-import reportlab.graphics.barcode.code128
如果你使用spec文件配置打包,在Analysis段的hiddenimports列表中添加'reportlab.graphics.barcode.code128'即可。 - 若使用Nuitka:打包命令追加
--include-module=reportlab.graphics.barcode.code128参数。 - 若使用cx_Freeze:在
setup.py的build_exe配置项的packages列表中添加'reportlab.graphics.barcode.code128'。
内容的提问来源于stack exchange,提问作者Daniel Lee
相关产品推荐
相关产品推荐

