使用py2exe编译Excel生成Python脚本后,生成的.exe无法运行
解决py2exe编译openpyxl脚本为.exe后无法运行的问题
嘿,我之前刚碰到过py2exe打包openpyxl脚本的坑!你的代码直接跑没问题,但打包成exe就失效,主要是两个原因:一是py2exe默认没把openpyxl的核心依赖资源打包进去,二是路径处理可能踩了坑。咱们一步步来搞定:
1. 先搞定setup.py的配置(关键!)
py2exe不会自动识别openpyxl需要的内部模板文件(比如默认的工作簿模板),所以得手动在setup.py里指定。先创建一个setup.py文件,放在你的脚本同目录下:
from distutils.core import setup import py2exe import openpyxl setup( console=['你的脚本文件名.py'], # 把这里替换成你实际的脚本文件名,比如gen_excel.py options={ 'py2exe': { 'packages': ['openpyxl'], 'includes': ['openpyxl.styles', 'openpyxl.workbook', 'openpyxl.worksheet'], 'bundle_files': 3, # 先不要打包成单文件,避免路径解析问题,测试成功后再改 'dist_dir': 'dist' } }, data_files=openpyxl.get_data_files() # 这行是核心!把openpyxl的资源文件打包进去 )
2. 调整脚本里的路径和权限处理
你的代码里直接写了保存路径,但如果C:\\Users\\{}\\create_exe这个目录不存在,exe运行时会报错“找不到路径”。另外硬编码路径也容易出问题,改成下面的写法:
import os import openpyxl import getpass username = getpass.getuser() # 用os.path.join拼接路径,更稳妥 save_dir = os.path.join('C:\\Users', username, 'create_exe') # 先检查目录是否存在,不存在就创建 if not os.path.exists(save_dir): os.makedirs(save_dir) save_path = os.path.join(save_dir, 'gen.xlsx') wb = openpyxl.Workbook() ws = wb.create_sheet('test') ws.cell(row=1, column=1, value=100) wb.save(save_path) print('Done') # 如果你的脚本是Python 2,去掉括号就行
3. 打包并测试
- 打开命令提示符,切换到脚本所在的目录
- 运行命令:
python setup.py py2exe - 进入生成的
dist文件夹,双击你的exe文件,应该就能正常生成Excel了!
如果还是有问题,试试先关闭杀毒软件(有些杀毒会拦截exe写入文件),或者右键以管理员身份运行exe,排查权限问题。
内容的提问来源于stack exchange,提问作者user9368716
相关产品推荐
相关产品推荐

