私の CentOS5 サーバーには、Python2.4 と 2.6 の両方があります (yum が機能するには 2.4 が必要です)。何が起こったのかわかりませんが、モジュールが 2.4 の site-packages ディレクトリにロードされているファイルを実行しようとするたびに、突然システムが非常に混乱します。PYTHONPATH/sys.path を確認したところ、代わりにすべてが 2.6 環境データで上書きされたようです。
これは以前は行われませんでした。スクリプトの先頭にある shebang ステートメントで /usr/bin/python または /usr/bin/python26 を宣言しただけで、常に正しいモジュールが正常に検出されました。
PYTHONPATH 変数を動的にして、実行中の Python インタープリターに基づいて異なるパスをロードする方法はありますか?
そうしないと、すべてのアプリケーションで手動でパスを編集する必要があり、やり過ぎのように思えます。
web.pyをインストールした後に始まりました(ちなみに、私は大好きです)。
トレースバック: 誰かが以下にコメントしたように、このプログラムのシバンを #!/usr/bin/env python に変更しました:
Traceback (most recent call last):
File "/usr/bin/linkchecker", line 24, in ?
import codecs
File "/usr/lib/python2.6/codecs.py", line 268
return (b"", 0)
^
yum を使用しようとする別の例:
Traceback (most recent call last):
File "/usr/bin/yum", line 5, in ?
import yum
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 21, in ?
import os
File "/usr/lib/python2.6/os.py", line 758
bs = b""
^
b"" 構文に混乱していないプログラムがいくつかあることに気付きました。それらはすべて、何らかの理由で 2.6 を使用している 2.4 を使用することを意図したプログラムです。プログラムに 2.6 インタープリターを使用させようとすると、その構文は理解できますが、他のモジュール (2.4 site-packages ディレクトリにあります) を見つけることができません。
sourceforge から入手したモジュールに記述されているため、その構文が何であるかはわかりませんが、先週は機能していました。何が変わったのかわかりません。
ありがとう、トム