2015-02-11 2 views
1

Предположим, у нас есть локальный модуль питона в том же каталоге, как мако шаблона: ./my_template.mako ./my_module/module.pyКак импортировать локальный модуль в шаблон Мако?

Как импортировать этот модуль в шаблон Мако, который должен быть оказаны из командной строки с помощью мако-рендеринга? Следующие действия недействительны:

<%! import my_module.module %> 

Похоже, что локальный путь не является частью пути поиска. Однако включение каждого настраиваемого модуля в глобальный путь не является вариантом.

ответ

0

Я предполагаю, что вам не хватает __init__.py в папке ./my_module, которая требуется для того, чтобы my_module был пакетом. Этот файл можно оставить пустым, он просто должен присутствовать, чтобы создать пакет.

Вот пример того, что вы описываете.

Layout Справочник

. 
├── example.py 
├── my_module 
│   ├── __init__.py <----- You are probably missing this. 
│   └── module.py 
└── my_template.mako 

Файлы

example.py

from mako.template import Template 
print Template(filename='my_template.mako').render() 

my_template.mako

<%! import my_module.module %> 
${my_module.module.foo()} 

module.py

def foo(): 
    return '42' 

__init__.py

# Empty 

Запуск Пример

>> python example.py 

42 
0

мако-рендеринга жизни в/USR/местные/бен или какой-то путь, как что.

Это питон скрипт и следует правилам питон интерпретатора искать импортных модулей: 1. своей директории (/ USR/местные/бен) 2. PYTHONPATH переменной окружения 3. В библиотеках установки.

вы можете получить эту работу, выполнив:

$ ENV PYTHONPATH =. mako-render

Смежные вопросы