2

私の 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 から入手したモジュールに記述されているため、その構文が何であるかはわかりませんが、先週は機能していました。何が変わったのかわかりません。

ありがとう、トム

4

2 に答える 2

2

まず、virtualenv を使用して、複数の Python インストール用のパッケージを分離します。あなたの問題のほとんどはすぐに消えます。

次に、Ibp が彼の回答で推奨しているように、シバン行を変更して「現在アクティブな」python バイナリを使用し、複数のインタープリターで機能するようにします。

于 2011-10-03T19:06:03.617 に答える
1

シバンを使用する代わりに (ファイルの最初のバイト)

#!/usr/bin/python

シバンを使う

#!/usr/bin/env python

編集:virtualenvを使用するというNoufalの提案に賛成です。

于 2011-10-03T18:45:14.510 に答える