#python-3.x #jinja2 #airflow
#python-3.x #jinja2 #воздушный поток
Вопрос:
Я пытаюсь создать рабочий процесс airflow, который генерирует html-отчеты с использованием jinja2 с помощью airflow. Шаблон находится под ./dags/report_generator/template.html
.
Я пытаюсь загрузить его ./dags/report_generator/generator.py
таким образом:
loader = FileSystemLoader("/dags/report_generator")
env = Environment(loader=loader)
template = env.get_template("template.html")
Это завершается ошибкой со следующей ошибкой:
template = env.get_template("report.html")
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 830, in get_template
return self._load_template(name, self.make_globals(globals))
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 804, in _load_template
template = self.loader.load(self, name, globals)
File "/usr/local/lib/python3.7/site-packages/jinja2/loaders.py", line 113, in load
source, filename, uptodate = self.get_source(environment, name)
File "/usr/local/lib/python3.7/site-packages/jinja2/loaders.py", line 187, in get_source
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: template.html
Я пробовал различные комбинации пути, loader
а также get_template
кода. У меня такое чувство, что загрузчик указывает куда-то еще, чем я думаю.
Есть ли способ запустить «печать рабочего каталога», на который указывает загрузчик?
Спасибо
Ответ №1:
Раньше я делал что-то вроде:
init_env = Environment(auto_reload=False)
path = os.path.join(os.path.dirname(__file__), '../', 'templates', templates_sub_dir)
init_env.loader = FileSystemLoader(path)
Где templates находится в корневом каталоге вашего проекта.
Комментарии:
1. Спасибо за ответ, я попробовал это без успеха
Ответ №2:
Столкнулся с этой проблемой и только что нашел довольно надежный обходной путь. После создания Environment
попробуйте вызвать
env.loader.list_templates()
Здесь должны быть перечислены все шаблоны, найденные FileSystemLoader
, а список файлов должен дать вам хорошее представление о том, где находится «рабочий каталог».