You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:18:58