python
プログラムコマンドは、Python 2を実行します。Python 3は、python3
コマンドを使用して実行できます。 Python 3をpython
コマンドを使用して実行するにはどうすればよいですか?
簡単で安全な方法は、エイリアスを使用することです。これを~/.bashrc
または~/.bash_aliases
ファイルに配置します。
alias python=python3
ファイルに上記を追加した後、source ~/.bashrc
またはsource ~/.bash_aliases
を実行します。
例えば:
$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3
エイリアスを回避するには、command
組み込みコマンドを使用します。
$ command python --version
Python 2.7.6
エイリアスを回避するもう1つの方法は、コマンドの前に\
を使用することです。
$ \python --version
Python 2.7.6
現在のシェルでエイリアスを無効にするには、unalias
組み込みコマンドを使用します。
$ unalias python
$ python --version
Python 2.7.6
[2016年6月]移行に関する情報の推奨場所は、公式の buntu Python ページです。
buntu wiki から:
UbuntuとDebianの両方で、ディストリビューションでPython 3をデフォルトの優先Pythonバージョンにするための 進行中 プロジェクト 目標 があります。
これがしないことの意味:
/usr/bin/python
はPython 3を指します。いいえ、これは起こりません( PEP 394 それ以外の場合は支持者であり、これは予見可能な将来について疑わしい)。/usr/bin/python
と/usr/bin/python2
はPython 2.7を指し、/usr/bin/python3
はサポートされている最新のPython 3バージョンを指します。Python 2はアーカイブから削除されます。 いいえ、これは起こりません。 PEP 37 が2020年までのアップストリームバグ修正メンテナンスサポートを約束することを考えると、Python 2.7はかなり長い間サポートされ、Ubuntuで利用可能になります。
他のパッケージの依存関係のため、シンボリックリンクを変更することはお勧めしませんが、「ディストリビューションでPython 3をデフォルトの優先Pythonバージョンにするプロジェクト進行中の目標があります」。
@ RaduRădean のようなCLIの使用では、ユーザーの~/.bashrc
、.bash_aliases
ファイルにエイリアスを置くことをお勧めします(~/.bash_profile
を含むさまざまなファイルは、少なくとも1回読み込まれ、主に組織的な目的で使用されますが、プラットフォームによって異なる場合があります)。 Python 仮想環境 もうまく機能します。
エイリアスの例:
alias python=python3
または
alias python='/usr/bin/python3'
相互互換性のために、スクリプトは#!/usr/bin/env python3
のようなものを引き続き使用する必要があります。
env
の使用は、仮想環境との混合使用に適しています。
注(@wjandreaに感謝):エイリアスはbashランタイムの一部であり、ユーザー環境ではありません。したがって、それらはシバン(#!
)では利用できません。エイリアスpython = python3を好む場合、このprogram.py
のようなエイリアスインタープリターを呼び出すことにより、Shebangのないpython program.py
を実行できます。エイリアスは、3.4と3.6のような複数のバージョンのpython3を一緒に使用するシステムにも役立ちます。
コマンドラインツール update-alternatives
を試すことができます。
$ Sudo update-alternatives --config python
「pythonの代替がない」というエラーが表示された場合は、次のコマンドを使用して自分で代替を設定します。
$ Sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
それに応じて、パス/usr/bin/python3
を目的のpythonバージョンに変更します。
Ubuntu、およびその他のLinuxディストリビューションは、多くのアプリケーションとコマンドについて、依然としてPython 2.7に大きく依存しています。 「python」のデフォルト参照をPython 3.xに変更すると、いくつかのPython関数がアサーションエラーのスローを開始します。
たとえば、Ubuntuでは、ファイルを直接編集し、Shbangを「#!/ usr/bin/env python2.7」を参照するように変更しない限り、「pip」は正しく実行されません。 Red Hat、Fedora、CentOSなどのRHEL(Red Hat Enterprise Linux)フレーバーでは、「Yum」コマンドもPython 2.7に依存しています。
ここでの私のポイントは、ターミナルで「python」と入力してPython 3.xを参照できるように、大量のコードにアサーションエラーのスローを開始させることです。
ターミナルで 'python3'コマンドを使用し、Python 3.xファイルでShebang '#!/ usr/bin/env python3'を使用する方がはるかに優れています。
行う
cd ~
gedit .bash_aliases
その後、どちらかを書く
alias python=python3
または
alias python='/usr/bin/python3'
ファイルを保存し、ターミナルを閉じて、もう一度開きます。
リンク
/usr/bin/python
をpython3
にシンボリックリンクできます
Sudo ln -s /usr/bin/python3 /usr/bin/python
Python 2とpip2が依存関係としてインストールされるのを防ぐことができます。
Sudo apt-mark hold python python-pip
これをしたくない理由については、他の回答を参照してください。 Ubuntu 18.04+にはPython 2が付属しなくなったため、それほど悪くないはずです。
cat > /usr/local/bin/py
#!/bin/dash
python3 "$@"
<CTRL-D>
(/ usr/local/binへの書き込み権限がある場合)同様に
cat > /usr/local/bin/pyi
#!/bin/dash
python3 -i "$@"
<CTRL-D>
次に、選択したpythonに対してpyと入力します(そして#!行でpyを使用します)。
/ usr/bin/pythonと/ usr/bin/pipを単に削除することは非常に役立ちます。これにより、すべてのプログラムが「python2」および「python3」コマンドに依存するようになります。
いくつかのオプションのパッケージや古いパッケージは#!/usr/bin/python
に依存して動作しますが、奇妙で時々デバッグしにくいミスを犯し続けるよりも、それらのプログラムにパッチを提出したいです。