【发布时间】:2016-03-05 07:37:03
【问题描述】:
我正在使用pyinstaller 来构建我的烧瓶应用程序,
一切正常,除了 Jinja2 模板出现问题。
它给了我jinja2.exceptions.TemplateNotFound,
我尝试将模板文件夹 from app import template 放入,但没有成功(我猜是因为它们不包含任何 py 文件)。
我还尝试更改 .spec 文件以包含 templates 文件夹
added_files = [
( '..\\CommerceApp\\app\\templates', 'templates' ),
( '..\\CommerceApp\\app\\static', 'static' )
]
a = Analysis(['..\\CommerceApp\\run.py'],
pathex=['D:\\PythonProjects\\CommerceAppExe'],
binaries=None,
datas=added_files,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
但是也没用,效果和我自己手动复制文件夹一样。
有没有办法将模板与 .exe 捆绑在一起?
编辑
这是我的spec 文件
# -*- mode: python -*-
block_cipher = None
a = Analysis(['..\\CommerceApp_withPyInstaller\\run.py'],
pathex=['D:\\PythonProjects\\CommerceAppExe'],
binaries=None,
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='SupplyTracker',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='SupplyTracker')
编辑 2
已接受的答案更改为 gmas80,因为它解决了问题。
编辑 3
我也刚刚意识到,我可以用我的包名创建一个新文件夹并填写静态模板css、html 等,它会起作用(类似于 gmas80 脚本的结果)
【问题讨论】:
-
创建一个1文件夹冻结的应用程序,并检查所有模板文件是否已收集!
标签: python templates flask jinja2 pyinstaller