Python-docx与Pyinstaller打包后exe无法生成报告问题求助
解决步骤
- 开启debug定位报错
把spec文件中EXE配置段的debug=False改为debug=True,重新打包后运行exe,即可看到具体报错日志,快速定位是依赖缺失还是路径异常。 - 适配运行路径
这类无报错功能失效的问题90%是路径不兼容导致的。PyInstaller打包后的exe运行时会临时解压到_MEIPASS目录,代码中所有资源引用、文件写入路径不能直接用相对路径,需要适配运行环境,在业务代码中加入路径获取函数:
所有引用docx模板的位置都通过该函数获取路径,比如:import sys import os def get_resource_path(relative_path): if hasattr(sys, '_MEIPASS'): # 打包后运行的临时目录 base_path = sys._MEIPASS else: # 源码运行时的项目根目录 base_path = os.path.abspath('.') return os.path.join(base_path, relative_path)
你当前spec中已经正确配置了docx模板的datas打包规则,这部分不需要修改。from docx import Document doc = Document(get_resource_path('docx/templates/default.docx')) - 排查写入权限
先把报告输出路径改为桌面这类绝对路径测试,避免因为exe所在目录没有写入权限导致生成失败。 - 补全依赖导入
PyInstaller可能无法自动识别python-docx的依赖,把spec中hiddenimports配置修改为:
重新打包即可。hiddenimports=['docx', 'lxml', 'python-docx']
内容的提问来源于stack exchange,提问作者Jeremiah Kalekyezi
相关产品推荐
相关产品推荐

