Django+PygmentsでソースコードハイライトしたときにApache2がエラー出力するのを防ぐ
Posted on Wed, 04 Mar 2009 01:43:49 +0900
最近なんか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 (はじめこれで解決できるかと思ったけど、無理だった。)