web-dev-qa-db-ja.com

特定のpythonバージョンを実行するようにシェルスクリプトを強制する

更新。

残念ながらエイリアスの変更は機能しません。エイリアスをエイリアスpython = '/ usr/bin/python2.7'に変更しましたが、シェルスクリプトは2.4.3でpythonスクリプトを実行します。

Muru-PYTHONPATHを使用してpythonパスにリダイレクトしています。しかし、あなたが言ったように、これは正しくないかもしれません。特定のpython実行可能ファイルに指示するために使用できるPYTHONPATHのバージョンはありますか?

シェルスクリプトは、要求されたとおりです。

cd ../../../..

export BREVE_CLASS_PATH=/home/user/breve_2.7.2/lib/classes
export PYTHONPATH=/usr/bin/python2.7


cd /home/user/breve_2.7.2

./bin/breve /home/user/breve_2.7.2/demos/Getting-Started/RandomWalker_version.py

特定のプログラムでpythonスクリプトを実行するシェルスクリプトを実行しています。

私の問題は、pythonスクリプトがpython 2.4で起動されているのに対し、python 2.7で実行する必要があることです。シェルスクリプトでは、使用するpython2.7を強制しようとする次の行を追加しました。

export PYTHONPATH=/usr/bin/python2.7

ただし、pythonスクリプトが使用しているバージョンを出力すると、python 2.4.3が表示されます。私はこれについて正しい方法を行っていますか?

どうすればいいですか?

1
Slimjimmy

複数のpythonバージョンがインストールされており、どのpythonをデフォルトとして使用するかを決定するため、デフォルトコマンドを決定するシンボリックリンクを保持するupdate-alternativesコマンドを使用する必要があります。

まず最初にこれを実行します:

update-alternatives --list python

結果が次の場合:

update-alternatives: error: no alternatives for python

次に、使用しているさまざまなpythonバージョンのupdate-alternativesから--installの代替を使用する必要があります(--listオプションで代替がリストされた場合は、--configオプション(後述)。 --installオプションのパラメーターはgroup、target、priorityであり、優先順位の数値が大きいほど優先順位が高くなり、groupは代替のグループが与えられるコマンドのpathを意味します。

update-alternatives --install /usr/bin/python python /usr/bin/python2.4 1
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2

この後、python 2.7がデフォルトのpythonになります。優先順位番号が大きくなり、両方のpythonバージョンが代替としてインストールされます(インストールした場合はそれ以上)他のバージョンも)。 python 2.7がすべてのデフォルトのpythonになったことに留意してください。

--listパラメーターを使用して、グループのインストール済みの代替を再度リストできるようになりました。

update-alternatives --list python

/usr/bin/python2.4
/usr/bin/python2.7

そして、次の方法で選択肢を切り替えることができます。

update-alternatives --config python

選択番号を入力すると、pythonの目的のバージョンがデフォルトのpythonとして使用されるように設定されます。

Update-alternativesの詳細については、manページを使用してください。

man update-alternatives
1
Ahti Komu

どうしてやらないの?

python /home/user/breve_2.7.2/demos/Getting-Started/RandomWalker_version.py 

最後の行に。これで解決できます(シバンが正しい場合)。

1
don.joey