在Spyder中用PyInstaller生成的exe提示缺少openpyxl.cell._writer模块怎么办?
解决PyInstaller打包exe时出现ModuleNotFoundError: No module named 'openpyxl.cell._writer'的问题
问题情况
脚本在Spyder环境中运行正常,但使用PyInstaller打包为单文件exe后,执行时抛出以下错误:
Traceback (most recent call last): File "AnalysisTool.py", line 13, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module File "openpyxl\__init__.py", line 7, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module File "openpyxl\workbook\__init__.py", line 4, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module File "openpyxl\workbook\workbook.py", line 9, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module File "openpyxl\worksheet\_write_only.py", line 13, in <module> File "openpyxl\\worksheet\\_writer.py", line 23, in init openpyxl.worksheet._writer ModuleNotFoundError: No module named 'openpyxl.cell._writer' [34476] Failed to execute script 'AnalysisTool' due to unhandled exception!
用户原打包代码:
import PyInstaller.__main__ PyInstaller.__main__.run([ '--onefile', '--noupx', '--hidden-import= openpyxl.cell._writer', 'AnalysisTool.py' ])
解决方案
1. 修正--hidden-import参数格式
原参数中等号后存在空格,导致PyInstaller无法正确识别模块名,需去掉空格,同时补充openpyxl的其他内部依赖模块:
import PyInstaller.__main__ PyInstaller.__main__.run([ '--onefile', '--noupx', '--hidden-import=openpyxl.cell._writer', '--hidden-import=openpyxl.worksheet._writer', 'AnalysisTool.py' ])
2. 确保openpyxl版本兼容(可选)
如果问题仍存在,尝试重装openpyxl以保证版本与PyInstaller兼容:
pip uninstall openpyxl -y pip install openpyxl
原因说明
- PyInstaller的
--hidden-import参数要求等号与模块名之间无空格,否则会将空格视为模块名的一部分,导致导入失败。 - openpyxl部分内部模块采用动态导入方式,PyInstaller的自动依赖检测机制无法捕获这些模块,必须手动通过
--hidden-import指定。
内容的提问来源于stack exchange,提问作者devdatta deo
相关产品推荐
相关产品推荐

