から作成されたPIPパッケージにJinja2のテンプレートを使用することができません私は、次のディレクトリ構造setup.py
は、Pythonスクリプトであるのpythonモジュール
foo
|--MANIFEST.in
|--requirements.txt
|--setup.py
|--foo.py
|--templates/
|--bar.tmpl
とPythonのプロジェクトを持っています。以前は、インストールスクリプトを使用してスクリプトを自分のプライベートbin
にシンボリックリンクしていましたが(成功して使用していましたが)、初めてパッケージ化することに決めました。私は、プロジェクトのルートディレクトリから$ pip install .
を使用してvirutalenvにパッケージを正常にインストールできました。jinja2
でテンプレートを生成するまで、ほとんどのスクリプトを実行できます。 templates
dirがパッケージの残りの部分とともにインストールされていないか、またはスクリプトがtemplates
dirへのパスを正しく見つけられていないかのようです。 foo.py
から
抜粋:
from jinja2 import Environment, ModuleLoader
def generate_readme(template_file):
template_env = Environment(loader=PackageLoader('foo','templates'))
template = template_env.get_template(template_file)
template_vars = {"title": get_title()}
output = template.render(template_vars)
return output
注:MANIFEST.in
の
from setuptools import setup
setup(name='foo',
py_modules=['foo'],
entry_points={'console_scripts': ['foo = foo:foo']}
include_package_data=True,
zip_safe=False)
内容::
はsetup.py
から
template_file
抜粋としてこの関数に渡されます
include templates/*
関連するトレースバック:
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/foo.py", line 30, in generate_readme
template = template_env.get_template(template_file)
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/environment.py", line 812, in get_template
return self._load_template(name, self.make_globals(globals))
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/environment.py", line 774, in _load_template
cache_key = self.loader.get_source(self, name)[1]
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/loaders.py", line 235, in get_source
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: bar.tmpl
私は神社とsetuptoolsのドキュメントを読んで、同様のstackoverflowのスレッドを読んで、グーグルの数時間を過ごした、と同様のコードを読んでいます。私がテストしたものはすべて同じエラーメッセージになりますが、私は多少なりとも迷っています。どんな助けでも大歓迎です。
助けてくれてありがとう!テンプレートdirはパッケージにロードされます。 jinja hehをデバッグするようになりました。 –