TracLightningを入れたらPythonの挙動が怪しくなった

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド
Tracというプロジェクト管理ツールの導入をより簡単にした「Trac Lightning」を入れてみたところ、Pythonの拡張モジュールが使えなくなった。原因はTrac LightningにPython自体が同梱されていることと、環境変数「PYTHONPATH」と「PYTHONHOME」が設定されたことだった。

Trac Lightning導入により設定される環境変数

これだけの環境変数が追加される。「Path」は既存の設定値の後ろに設定されていた。Pathは通常手前が優先されるので、コマンドラインから立ち上がるPythonは既存の「2.7.2」。「PYTHONPATH」と「PYTHONHOME」は未設定だったので、Trac Lightning同梱の「python 2.6.6」側が適用される、ということになる。これは歪だなあ……。

APR_ICONV_PATH C:\TracLight\CollabNetSVN\httpd\bin\iconv
MAVEN_HOME C:\TracLight\maven
OPENSSL_CONF C:\TracLight\CollabNetSVN\httpd\conf\openssl.cnf
Path C:\TracLight\python
C:\TracLight\python\Scripts
C:\TracLight\CollabNetSVN
C:\TracLight\CollabNetSVN\httpd\bin
C:\TracLight\Graphviz\bin
C:\TracLight\maven\bin
C:\TracLight\bin
PYTHONHOME C:\TracLight\python
PYTHONPATH C:\TracLight\python\DLLs\
C:\TracLight\python\Lib
C:\TracLight\python\Lib\plat-win
C:\TracLight\python\Lib\lib-tk
C:\TracLight\Lib\site-packages
TRACPATH C:\TracLight\python
C:\TracLight\python\Scripts
C:\TracLight\CollabNetSVN
C:\TracLight\CollabNetSVN\httpd\bin
C:\TracLight\Graphviz\bin
C:\TracLight\maven\bin
C:\TracLight\bin

とりあえずの対処

Pythonはちょっとしたスクリプトを走らせる程度にしか使っていなかったので、スクリプト実行前にPYTHONPATHとPYTHONHOMEをクリアすることで、とりあえず対処している。

C:\> SET PYTHONPATH=
C:\> SET PYTHONHOME=

あと、ちゃんと動作確認したわけではないけど、PYTHONPATH・PYTHONHOMEをクリアした状態で得られる「sys.path」の値を、PYTHONHOMEの後ろに設定するととりあえず拡張モジュールをインポートできるようにはなった。

次のコマンドで得られる文字列を環境変数「PYTHONPATH」の後ろに追加する。

C:\>python -c "import sys;print ';'.join(sys.path[1:])"

改行は取り除く。PYTHONPATHのセミコロンで区切ることを忘れない。

C:\>python -c "import sys;print ';'.join(sys.path[1:])"
C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg;C:\Python27\lib\site-p
ackages\django-1.3.1-py2.7.egg;C:\Python27\lib\site-packages\pygments-1.5-py2.7.
egg;C:\Python27\lib\site-packages\genshi-0.6-py2.7-win32.egg;C:\Python27\lib\sit
e-packages\trac-0.12.3-py2.7-win32.egg;C:\WINDOWS\system32\python27.zip;C:\Pytho
n27\DLLs;C:\Python27\lib;C:\Python27\lib\plat-win;C:\Python27\lib\lib-tk;C:\Pyth
on27;C:\Python27\lib\site-packages;C:\Python27\lib\site-packages\win32;C:\Python
27\lib\site-packages\win32\lib;C:\Python27\lib\site-packages\Pythonwin

C:\>

全体的な挙動はちょっと怪しくなっちゃったなあ、という感じ。IDLEは起動しなくなったし(エラーもでない)。よく調べてからインストールするか、本家のTracを入れたほうがよかったかもしれない。一般的に必要そうな拡張機能をオールインワンにしている便利さは素晴らしいと思う。