TracLightningを入れたらPythonの挙動が怪しくなった
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を入れたほうがよかったかもしれない。一般的に必要そうな拡張機能をオールインワンにしている便利さは素晴らしいと思う。