RHEL 7でPythonのデフォルトバージョンを2.7から3.7に変更する方法
RHEL7仮想マシンにPythonをインストールするには、次の手順に従ってください。https://tecadmin.net/install-python-3-7-on-centos/
Pythonのバージョンを確認すると、まだ古いバージョンが印刷されます。
答え1
RHEL 7とその派生製品はPython 2に大きく依存しています。 Python 2をPython 3に完全に交換すると、オペレーティングシステムのいくつかのコアツールが破損します。
そうでなくても、あなたの質問はまず、Python 2をPython 3に完全に置き換えることが良い考えであるという誤った前提に基づいています。代わりに、2つを並べて設置してください。
どのように?まず、python3
メジャーバージョンの互換性の問題から保護されるように、常にPython 3を参照する必要があります。 Python 2が次のようにpython
呼び出すと仮定するスクリプトシェルボーンラインpython3
したがって、バイナリPythonパッケージが正しく構築されている限り、実際にはバイナリの以前のバージョンと新しいバージョンとそれに依存するものとの間に競合はありません。
/usr/bin/python
この「if」はあなたをいじめることができます。一部のパッケージでは、Python 3 パッケージを Python 3 パッケージと同様に作成したため、競合が発生する可能性があります。これらのパッケージは標準の推奨事項を無視するため、両方のパッケージを並べてインストールできます。
1つ得ることに関しては衝突しないRHEL 7用のPython 3パッケージ、つまりStack Overflowに対するもう一つの答えはよく説明されています。。
答え2
私はalternatives
解決策をお勧めしたい
私の注文は次のとおりです。
#!/bin/bash
alternatives --list | grep -i python
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
alternatives --install /usr/bin/python python /usr/bin/python3.6 2
alternatives --install /usr/bin/python python /usr/local/bin/python3.7 3
alternatives --config python
答え3
標準の公式インストール(SCLリポジトリを使用)を持つRHEL7で、「sclを有効にする」コマンドを使用して現在のシェルのpython3環境に切り替えます(注:私の場合はPython 3.6があります)。
scl enable rh-python36 "/bin/bash"
特定のユーザーが自分の環境に合わせてPython3をハード構成するように設定するには、次の手順を実行します(注:「[some_user]」をそのユーザーのユーザー名に置き換えます)。
user=[some_user]; userhome=$(eval echo ~$user); echo ". /opt/rh/rh-python36/enable" >> ${userhome}/.bashrc
.bashrcはログインシェルと非ログインシェルの両方にロードされるため、これはコマンドラインで実行されるスクリプト、特定のcronジョブによって実行されるスクリプトなどに適用する必要があります。それがすることは、デフォルトの場所にシステムデフォルトの代わりにPython3を指すように必要な環境変数を設定することだけです。とても簡単です。
SCLの詳細については、ここで見つけることができます。この概念を理解するには、次の内容をお読みください。https://developers.redhat.com/products/softwarecollections/overview