Python 如何在py2app构建中使用xlwt
我已经成功地使用xlwt在脚本末尾输出了一个excel文件,但当该脚本转换为独立程序(使用py2app)时,将不再生成此excel。其他导入的包(用于GUI的Tkinter)工作正常,我找不到一个地方出现同样的问题。 (Mac OS 10.9.5、python 2.7.5:预装Mac版本) (xlwt存在于/build/bdist.macosx-10.9-intel/python2.7-standalone/app/site packages/中) 问题被隔离到一个非常小的脚本中,该脚本输出一个excel文件,其中有一个填充的单元格:Python 如何在py2app构建中使用xlwt,python,excel,macos,xlwt,py2app,Python,Excel,Macos,Xlwt,Py2app,我已经成功地使用xlwt在脚本末尾输出了一个excel文件,但当该脚本转换为独立程序(使用py2app)时,将不再生成此excel。其他导入的包(用于GUI的Tkinter)工作正常,我找不到一个地方出现同样的问题。 (Mac OS 10.9.5、python 2.7.5:预装Mac版本) (xlwt存在于/build/bdist.macosx-10.9-intel/python2.7-standalone/app/site packages/中) 问题被隔离到一个非常小的脚本中,该脚本输出一个
def export_xcl():
import xlwt
wb = xlwt.Workbook()#initialize excel sheet
ws = wb.add_sheet('Sheet1')
text_cells=xlwt.easyxf('font: name Times New Roman')
ws.write(0,0, 'jaja',text_cells)
print ('voor het saven')
wb.save('testx.xls')
print ('na het saven')
if __name__ == '__main__':
export_xcl()
此脚本在正常启动时运行良好
但是,可执行文件没有。py2app使用的setup.py文件如下:
from setuptools import setup
APP = ['testx.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
wb.save('../../../testx.xls')
现在运行以下命令:$python setup.py py2app
生成独立程序,该程序在打开时不会生成excel工作表
我在不同的网站上读到,人们在他们的构建中包含了xlwt脚本,没有任何问题,因此我希望有人能为我指出正确的方向。最后,问题在于MyApplication.app后面的隐藏文件夹。当发出以下命令时:
wb.save('testx.xls
excel文件将保存在MyApplication.app/Contents/Resources/testx.xls下。
要保存在与运行文件相同的目录中,请使用以下命令:
from setuptools import setup
APP = ['testx.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
wb.save('../../../testx.xls')
如果给出了明确的位置,则不会出现此问题。在
%PythonDir%\Lib\site包中是否有名为xlsxriter
的文件夹(/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/Lib)。这是我要找的文件夹吗?我的意思是xlwt
,而不是xlsxwriter
那里也没有xlwt(如果我确实在正确的文件夹中)。我刚刚意识到你在mac上,所以我不确定这会有多大帮助,但我在py2exe
上遇到了同样的问题,在互联网上找不到任何帮助。我所能找到的所有建议都是在选项中添加“includes”:“xlwt”
,但我最终不得不将原始xlwt
文件夹移动到%PythonDir%\Lib\site packages
,它才能最终工作。希望有人能给你一个更好的答案。祝你好运