web-dev-qa-db-ja.com

'python'プログラムコマンドにPython 3を実行させる方法は?

pythonプログラムコマンドは、Python 2を実行します。Python 3は、python3コマンドを使用して実行できます。 Python 3をpythonコマンドを使用して実行するにはどうすればよいですか?

328
Giri

簡単で安全な方法は、エイリアスを使用することです。これを~/.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
363
Radu Rădeanu

[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を一緒に使用するシステムにも役立ちます。

84
Kevin

更新:Python2と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バージョンに変更します。

25
webwurst

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'を使用する方がはるかに優れています。

9
Moony

行う

cd ~
gedit .bash_aliases

その後、どちらかを書く

alias python=python3

または

alias python='/usr/bin/python3'

ファイルを保存し、ターミナルを閉じて、もう一度開きます。
リンク

2
Breeze

/usr/bin/pythonpython3にシンボリックリンクできます

Sudo ln -s /usr/bin/python3 /usr/bin/python

Python 2とpip2が依存関係としてインストールされるのを防ぐことができます。

Sudo apt-mark hold python python-pip

これをしたくない理由については、他の回答を参照してください。 Ubuntu 18.04+にはPython 2が付属しなくなったため、それほど悪くないはずです。

1
Boris
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を使用します)。

0
John Allsup

/ usr/bin/pythonと/ usr/bin/pipを単に削除することは非常に役立ちます。これにより、すべてのプログラムが「python2」および「python3」コマンドに依存するようになります。

いくつかのオプションのパッケージや古いパッケージは#!/usr/bin/pythonに依存して動作しますが、奇妙で時々デバッグしにくいミスを犯し続けるよりも、それらのプログラムにパッチを提出したいです。

0
Erik Aronesty