【发布时间】:2018-04-17 11:26:33
【问题描述】:
我正在尝试使用 py2exe 为生成 excel 的 python 脚本生成 aa .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}}
)
这个我已经试过了
- 我已经搜索过了,很少有人说使用 pip 安装 openpyxl。我 已经这样做了,pip 说它已经安装好了。
- 我也尝试使用 pip 安装 jdcal,pip 说它已安装。
- 我已卸载 jdcal 并使用 pip 手动安装它,并且 仍然是同样的错误。
- 我已将 jdcal 包含在包中,但结果仍然没有变化。
我希望有人可以帮助我。
提前致谢
编辑: 在dist文件夹中生成的文件如下(这里看不到openpyxl,不知道为什么)
- tcl(文件夹)
- _ctypes.pyd
- _elementtree.pyd
- _hashlib.pyd
- _multiprocessing.pyd
- _socket.pyd
- _ssl.pyd
- _tkinter.pyd
- bz2.pyd
- pyexpat.pyd
- select.pyd
- unicodedata.pyd
- win32ui.pyd
- numpy.core._dummy.pyd
- numpy.core.multiarray.pyd
- numpy.core.multiarray_tests.pyd
- numpy.core.operand_flag_tests.pyd
- numpy.core.struct_ufunc_test.pyd
- numpy.core.test_rational.pyd
- numpy.core.umath.pyd
- numpy.core.umath_tests.pyd
- numpy.fft.fftpack_lite.pyd
- numpy.linalg._umath_linalg.pyd
- numpy.linalg.lapack_lite.pyd
- numpy.random.mtrand.pyd
- _win32sysloader.pyd
- win32api.pyd
- win32pdh.pyd
- win32pipe.pyd
- tk85.dll
- tcl85.dll
- libiomp5md.dll
- pywintypes27.dll
- python27.dll
- w9xpopen.exe
- pythoncom27.dll
- 图书馆.zip
- test_program.exe(可执行文件)
【问题讨论】: