Jinja2でリリースパッケージのテンプレートを使う

setup.py の書き方とかの方にハマったので、メモしておきます。

pyprof2htmlJinja2 のテンプレートを使っているのですが、 ソース内にテンプレートを埋め込んでいるため可読性や ソースコードハイライトが有効にならない等色々悩ましい感じになってきました。 テンプレート専用のファイルを作って読み出すことにしました。

パッケージとしてリリースするテンプレートファイルはどうやって読み出したらいいのか? そこで登場するのが PackageLoader ですね。

こんな感じ。

ENVIRON = Environment(loader=PackageLoader('pyprof2html',
                      './templates', encoding='utf-8'))

パッケージインストール用の設定

ディレクトリ構成

pyprof2html/
setup.py
MANIFEST.in
    pyprof2html.py
    templates/
        basic.html
        hotshot-line.html
        style.css
        jquery.js
        jquery.tablesorter.js

setup.py のパッケージ関連の記述は以下のような感じになります。

packages=[''],
package_dir={'': 'pyprof2html'},
package_data={'': ['templates/*']},

sdist用のリリースのために MANIFEST.in ファイルに以下を追加しました。

include pyprof2html/templates/*

そんな感じであります。