ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

DeprecationWarning: Absolute template path names are deprecated.

PythonでBottleとPeeweeを使ってアプリケーションを書いていると以下の警告に出くわした。

/usr/local/lib/python2.7/dist-packages/bottle.py:3320: DeprecationWarning: Absolute template path names are deprecated.
fname = self.search(name, self.lookup)

今までも何度も同じようなコードを書いてきているがこのDeprecationWarningを見たのは初めてになる。現在アプリケーションを製作中になるためlocalhostで動かしているのだが、何度もこのエラーがログに表示される。

ザッとコードを追ってみても理由がわからなかったし、Bottleのバージョンを0.12.5と0.13の双方で試してみても同様の症状であった。

初めてのPython 第3版

初めてのPython 第3版


今までのアプリケーションとの違いを考えてみると一点違いがあった。今までBottleで制作するアプリケーションは簡易的なものが多かったためBottle標準の簡易的なテンプレートエンジンを利用していたのだが、今回は150万レコードほどのデータを表示する少々大掛かりなアプリケーションになる。そのためBottleのテンプレートエンジンでは少々貧弱になるためテンプレートエンジンとしてBottleの「jinja2_template」を使っている。

from bottle import jinja2_template as template

これが今までのアプリケーションとの大きな違いになる。


そしてこの差分から原因を追いかけてみると、Bottleのdebug機能を有効にしていると通常はキャッシュが破棄されるのだが、Jinjaはテンプレートをキャッシュしてしまうためにこの警告が表示されているとのこと。

Bottleのdebugはデプロイ時には外すためにデバッグ中は気にする必要がないかもしれないが、私のように警告が気になって寝られないという人はdebugオプションを無効にするだけでこの警告は表示されなくなる。


ちなみに私は以下のようにローカルサーバを起動させていた。

run(host='localhost', port=8080, debug=True, reloader=True)

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)

エキスパートPythonプログラミング

エキスパートPythonプログラミング

Pythonプロフェッショナルプログラミング

Pythonプロフェッショナルプログラミング