Проблема с путем CherryPy / Mako с%include в Linux (работает в Windows)

#python #linux #include #cherrypy #mako

#python #linux #включить #cherrypy #mako

Вопрос:

У меня есть приложение со следующими файлами

 /path_to_app
   app.py
   /html
      page.html
   /js
      page.js
  

В app.py Я загружаю и визуализирую шаблон mako. Файл шаблона page.html в каталоге html. Эта страница содержит строку:

      <%include file="../js/page.js" />
  

который предназначен для поиска и включения соответствующей страницы javascript (после выполнения замен mako в этом файле). Это отлично работает на моей машине разработки Windows, но когда я развертываю на сервере Ubuntu Linux для дальнейшего тестирования, он выдает ошибку: TemplateLookupException: Template uri «../js/fund_page.js » недопустимо — оно не может быть относительным вне корневого пути.

изменение include, чтобы сделать его абсолютным для корня приложения:

      <%include file="/js/page.js" />
  

не помогает, возвращает сообщение: TemplateLookupException: не удается найти шаблон для uri u’/js/fund_page.js «.

Какие изменения необходимы, чтобы иметь возможность использовать этот mako include в Linux, и можно ли выразить его таким образом, чтобы он был совместим как с Windows, так и с Linux?

Комментарии:

1. Просто примечание: это поведение было введено с Mako 0.5

Ответ №1:

Я решил эту проблему, используя простой способ перемещения включенного js-файла в тот же каталог, что и вызывающий его html-файл.

Ответ №2:

Вы должны добавить родительский каталог «js» в directories параметр вашего экземпляра TemplateLookup. Например:

 mako_lookup = TemplateLookup(directories=[ root   "/project/templates",
                                           root   "/public"])