UbuntuでPython3のデフォルトバージョンを変更する


72

Ubuntu 16.04 LTSを使用しています。私がしているpython3インストールされています。2つのバージョンがインストールされpython 3.4.3ていpython 3.6ます。python3コマンドを使用するたびにpython 3.4.3、デフォルトでそれがかかります。で使用python 3.6したいpython3

python3 --version ショー version 3.4.3

ansibleサポートするをインストールしていますversion > 3.5。したがって、端末でansibleと入力するたびに、次の理由でエラーがスローされます。python 3.4


python 3.6の実行に使用されるコマンドは何ですか?

コマンドは:-python3.6
codeclue

3
あなたは何sudo update-alternatives --config python3と言いますか?
ミカエルケア

1
更新選択肢:エラー:のpython3のためノー選択肢
codeclue

特定のバージョンのpython3でansibleを使用する方法については、以下の回答の私のコメントを参照してください。Python 3.4の削除も検討できます。
ミカエルケア

回答:


97

コメントから:

sudo update-alternatives --config python

エラーが表示されます:

update-alternatives: error: no alternatives for python3 

を更新する必要がありますupdate-alternatives。デフォルトのpythonバージョンを設定できます。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

次に実行します:

sudo update-alternatives --config python

python3.6をデフォルトとして設定します。

または、次のコマンドを使用して、python3.6をデフォルトとして設定します。

sudo update-alternatives  --set python /usr/bin/python3.6

1
この答えはおそらく壊れるでしょうapt。異なるバージョンのpythonを選択した後、実行してみてくださいsudo apt update。シンボリックリンクModuleNotFoundError: No module named 'apt_pkg'にアクセスし/usr/lib/python3/dist-packagesて作成したいようなエラーが表示される場合:ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so
ジャコモアルゼッタ

エラーが表示されます:$ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for python提案はありますか?
スラバフォミンII

1
@ GAD3Rありがとう。Python 3.6を指すように手動でシンボリックリンクを作成できました。また、3.7はインストールされていません。
スラバフォミンII

この方法でpython3ポイントを作ることは私にとってpython3.8破綻gnome-terminalしました。
ボリス

10

これを実現するには、以下の簡単な手順を適用します-

  1. ターミナルのpythonバージョンを確認します- python --version
  2. rootユーザー権限を取得します。端末タイプ-sudo su
  3. rootユーザーのパスワードを書き留めます
  4. このコマンドを実行して、Python 3.6に切り替えます-
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Pythonバージョンを確認します- python --version
  6. できた

1
動作し、読みやすく、エイリアスを使用しません。+1
カルロスピンソン

Ubuntu 18.04で正常に動作します。他のソリューションよりも簡単です。どうもありがとう
モハマド・ハイダリ

7

/ usr / bin / python3のシンボリックリンクを作成します。私のLinuxMintで:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2

6

これらのコマンドを使用すると、次のことができます。

  1. pythonのバージョンを確認します。 ls /usr/bin/python*
  2. エイリアス: alias python='/usr/bin/pythonxx'
  3. 再ログイン: . ~/.bashrc
  4. Pythonバージョンをもう一度確認します。 python --version

感謝しますが、コンピュータを再起動した後、メインのpythonはまだ元のpython 2.7になります
Mohammad Heydari

3

簡単な答えは、python3.6のエイリアスを追加することです。

〜/ .bashrc:ファイルにこの行を追加してからalias python3="python3.6"、ターミナルを閉じて新しいターミナルを開きます。入力python3 xxxすると、に変換されpython3.6 xxxます。

このソリューションは、システムを大幅に調整する必要なく、問題を修正します。

編集:

ミカエル・ケアーは指摘し、これはあなたのシステムとのansibleの設定ミスです。

ここに見られるように:

設定してansible_python_interpreterは/ usr / binに/のpython3にコンフィギュレーションオプションを選択します。ansible_python_interpreter構成オプションは、通常、ホストまたはホストのグループに関連付けられたインベントリ変数としてホストごとに設定されます。

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

見られるように、ここで設定ファイルについて:

変更を行って、構成ファイルで使用することができます。構成ファイルは、次の順序で処理されます。

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

実は、私は>のpython 3.5をサポートする、ansibleインストールしています
codeclue

1
ansible_python_interpreterpython3.6を使用するように変数を設定できます。docs.ansible.com/ansible/latest/python_3_support.html
ミカエル

@MikaelKjær私の答えにあなたのコメントを追加しました

1

システムに複数のバージョンのpythonがある場合。あなただけの内部のPythonのシンボリックリンクを更新する必要があります/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

上記の例では、出力が表示されるpython --version場合、python2.7が取得されます。

以下のコマンドを使用してPythonシンボリックリンクを更新します

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8

0

update-alternativesは、システムシンボリックリンクをユーザー定義/管理者定義のシンボリックリンクに変更します。システムに複数のバージョンのpython3がインストールされており、python3が呼び出されたときに呼び出すpython3バージョンを制御する場合。以下をせよ

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

将来優先順位を変更する場合は、以下のコマンドを実行します。

update-alternatives --config python3

説明:-

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

name_of_configをpython4に変更することもできますが、python4でupdate-alternatives --configを呼び出して再構成する必要があります。

このアプローチを使用すると、システムのpythonバージョンとpython3バージョンを個別に制御できます。


0

最初のチェックはpython3.6フォルダですか

ls /usr/bin/python3.6

python3.6のようなフォルダがあればいい

その後、更新代替

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

python3の新しい設定を更新します

sudo update-alternatives --config python3

Pythonバージョンを確認する

python3 --version


0

シンボリックリンクはln -sf python3.6 python3insideで変更できます/usr/bin。これで呼び出すpython3と実行されますpython3.6

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.