【发布时间】:2021-09-09 13:05:29
【问题描述】:
该应用程序运行良好,但在尝试运行 Pyinstaller 捆绑的 .exe 文件时,它给了我消息:jinja2.exceptions.TemplateNotFound: color_scale.js
此 .js 文件位于 ...Lib\site-packages\branca\templates 中。我已经在 .spec 文件中插入了相应的关联,以便 Pyinstaller 可以收集它:
a = Analysis(['app.py'],
...
datas=[(...
...
("C:...\\Lib\\site-packages\\branca\\templates","templates"),
...
以前,我遇到过 ValueError: The 'branca' package is not installed in an PackageLoader 理解的方式,女巫我通过修补 .../site-packages/branca/element.py 来使用 jinja2 解决了这个问题处理冻结的应用程序时使用 .FileSystemLoader 而不是 jinja.PackageLoader:
import sys
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
import os
from jinja2 import FileSystemLoader
bundle_dir = getattr(sys, '_MEIPASS')
data_dir = os.path.abspath(os.path.join(bundle_dir, 'branca', 'templates'))
ENV = Environment(loader=FileSystemLoader(data_dir))
else:
ENV = Environment(loader=PackageLoader('branca', 'templates'))
我正在处理 Python 3.9.6、Flask 1.1.2、Werkzeug 1.0.1 和 Pyinstaller 3.6。
我不知道这种关系,但这个问题不会出现在 32 位旧版本的 bunled 应用程序中。
感谢您的帮助。谢谢!
【问题讨论】:
-
你应该把它放在 branca/templates 我猜是
"C:...\\Lib\\site-packages\\branca\\templates","branca/templates")。另外,您可以使用--collect-data branca看看是否有效。 -
@gfdsweds 成功了!
"C:...\\Lib\\site-packages\\branca\\templates","branca\templates")解决了这个问题。对于后续问题,我不得不在所有 folium 脚本中使用 FileSystemLoader-PackageLoader 补丁,但现在可以了。谢谢!
标签: python-3.x flask jinja2 pyinstaller