我正在尝试使用py2exe为生成excel的python脚本生成一个.exe。这是一个示例代码。我正在向单元格写入值100并使用openpyxl将Excel保存到用户桌面。当我直接运行它时,这种方法非常好。
import openpyxl
import getpass
wb = openpyxl.Workbook()
ws = wb.create_sheet('test')
ws.cell(row=1, column=1, value=100)
username = getpass.getuser()
wb.save('C:\\Users\\{}\\create_exe\\gen.xlsx'.format(username))
print 'Done'
当我使用py2exe编译它时,编译也很好。
当我运行生成的.exe文件时出现问题。我得到一个回复说
ImportError: No module named jdcal
setup.py文件如下
import py2exe
from distutils.core import setup
packages = ["openpyxl", "openpyxl.workbook", "xml.etree", "xml"]
excludes = []
setup(console=['test_program.py'],
options={"py2exe": {"excludes": excludes,
"packages": packages}}
)
Thisngs我已经尝试了
我希望有人可以帮助我。
提前致谢
编辑: 生成文件在dist文件夹中如下(openpyxl在这里看不到,我不知道为什么)
答案 0 :(得分:0)
尝试将其手动包含在setup.py
packages = ["openpyxl", "openpyxl.workbook", "xml.etree", "xml"]
中
所以它会是:
packages = ["openpyxl", "openpyxl.workbook", "xml.etree", "xml", "jdcal"]
答案 1 :(得分:0)
我个人幸运地让py2exe检测到所需的模块。我从未尝试过指定必要的每个模块。 试试这个:
from distutils.core import setup
import py2exe
setup(console=['test_program.py'])
这应该从命令行运行
python setup.py py2exe
py2exe在dist目录中输出.dll文件,这些文件必须位于您运行.exe文件的目录中。如果你只想要一个.exe文件而没有.dll文件试试这个:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
console = [{'script': "test_program.py"}],
zipfile = None,
)
这应该从命令行运行
python setup.py
答案 2 :(得分:0)
我使用cx_freeze并且从未遇到过任何问题。 这是cx_freeze文件的setup.py
from cx_Freeze import setup, Executable
build_exe_options = {"excludes": ["html5lib"],"optimize":2}
setup(name = "App Name" ,
version = "1.0.0.0" ,
options = {"build_exe": build_exe_options},
description = "" ,
executables = [Executable("FooBar.py")])