Django+PygmentsでソースコードハイライトしたときにApache2がエラー出力するのを防ぐ

最近なんかApache2のエラーログ出力が多いなぁと思っていたら、以下のようなエラーが出力されていました。

[2009] [error] /usr/lib/python2.5/site-packages/pygments/plugin.py:40:
UserWarning: Module docutils was already imported from /usr/lib/python
2.5/site-packages/docutils/__init__.py, but /usr/lib/python2.5/site-pack
ages is being added to sys.path
[2009] [error]   import pkg_resources

おそらく pygmentsでソースコードハイライト したときからエラーがでていたと思うのですが、 いままで気づいていませんでした。

根本の原因を理解していないかもしれませんが、上記エラーを出力させないようにする方法はわかりました。

pkg_resourcesモジュールは /usr/lib/python2.5/site-packages/配下の .egg あたりからsys.pathにモジュールパスを いい感じに足してくれるみたいなのですが、egginfoとかがないとうまくモジュールパスが取得できない みたいです。なので、上記の場合docutilsがsys.pathにないと怒られてるので、pipでアップグレードして解決しました。 (結局、PygmentsとかDjangoとかは関係なかった。)

$ pip install -U docutils
$ python -c "import sys; print sys.path"    ##これで確認

PEP 365 -- Adding the pkg_resources module 、訳したいですね。

Reference

Bug#473584: UserWarning: Module _mysql was already imported (はじめこれで解決できるかと思ったけど、無理だった。)