3

サーバーにPython 2.7をインストールしたところ、事前に2.4がインストールされていました。

新しいバージョンをビルドした後も、パスはまだ古いバージョンの python を指しています。これを変更する簡単な方法をご存知ですか。

sudo 権限も root アクセス権もありません。

4

3 に答える 3

3

あなたはサーバー上にいてルート権限を持っていないため、 virtualenvを使用するのが最善の選択です。

たとえば、次のように Python 2.7 をビルドします。

$ ./configure --prefix=~/mydir
$ make
$ make install

virtualen.pyファイルをダウンロードして実行します。

$ ~/mydir/bin/python virtualenv.py my_environment

my_environmentこれにより、ディレクトリ内に隔離された Python 2.7 環境が作成されます。

それをアクティブにするには、実行source my_environment/bin/activateしてください。pythonこれで、実行可能ファイルは Python 2.7 になります。さらに、pipインストール済みであるため、追加のライブラリを環境に簡単にインストールできます。

于 2012-11-21T10:16:30.923 に答える
0

まず、問題のあるパスを含むディレクティブ(または、正確に参照しているものによっては)がないか~/.profile、シェルの構成ファイル(~/.bashrcbashなど)を確認する必要があります。ある場合は、変更して再ログインしてください。それはあなたの問題を解決するはずです。export $PATH=PYTHONPATH

そうでない場合は、管理者に相談してください。それでも問題が解決しない場合は、次のようにすることができます。シェルで、次のコマンドを実行します(実際に必要なものに応じて、で置き換えることができます)PATHPYTHONPATH

echo $PATH

出力をコピーして、必要に応じて変更します。次に、別のシェルを開いて実行します(置換を覚えておいてください)。

export PATH="whatever you copied before"

すべてが正常であることを確認します(つまり、必要なすべてのアプリケーションを引き続き呼び出すことができ、それに応じてパスが調整されていることを確認します)。その場合は、コマンドをに追加してください~/.profile

于 2012-11-21T09:48:35.287 に答える
0

この回答は、環境がLinux、Unix、または同様のものであることを前提としています。

問題がPATH環境変数が正しいバイナリを指していないことである場合は、次のように変更します。たとえば、プロファイルファイルの1つから実行しPATHて、特定のディレクトリを含めるようにします。必ずそのディレクトリを作成し、正しいバージョンのPythonを指すという名前のシンボリックリンクが含まれていることを確認してください。~/binPATH=${HOME}/bin:${PATH}~/.profilepython

これは、パスがハードコードされているスクリプト(たとえば、で始まる)には役立ちません#!/usr/bin/python。これらをコマンドラインから直接呼び出す場合は、python代わりにインタプリタ(つまり)を呼び出すだけで、スクリプトの名前を引数として渡すことができますpython /path/to/script.py。代わりに、必要なPythonバージョンを使用することもできますpython2.7 /path/to/script.py

このシーケンス全体を~/binディレクトリ内のスクリプトに変換することもできます。たとえば~/bin/foo、次のコンテンツが含まれています。

#!/bin/sh
exec ${HOME}/bin/python2.7 /usr/bin/foo

chmod -x ~/bin/fooファイルを忘れないでください。PATHシステムにインストールされているデフォルトバージョンの前にある実行可能シェルスクリプトを取得します。次に、スクリプトは、非常に特殊なインタープリターを使用して、そのデフォルトバージョンを呼び出します。これで、短い名前を入力するだけで、目的のPythonバージョンで公式スクリプトを実行できます。

他のスクリプトが、絶対パス名を使用して特定のPythonスクリプトを実行しようとする場合があります。その場合、の変更は役に立ちませんPATH。問題のスクリプトの最初の行を変更して、たとえばを読む必要があり#!/usr/bin/env pythonます。これらのスクリプトを制御できない場合は、問題が発生しており、システムを微調整して通常は実行できないことを実行するために、より高度なハックが必要になります。LD_PRELOAD頭に浮かぶ。

于 2012-11-21T09:49:30.617 に答える