python
プログラム命令は、Python 3を使用して実行することができるPythonの2を実行するpython3
コマンド。python
コマンドを使用してPython 3を実行するにはどうすればよいですか?
python
意味として保持されるべきpython2
です。私のコメントは、システムのPythonを回避しようとするのではなく、アプリケーション固有のPythonバージョンを使用する方法としてのものでした。
python
プログラム命令は、Python 3を使用して実行することができるPythonの2を実行するpython3
コマンド。python
コマンドを使用してPython 3を実行するにはどうすればよいですか?
python
意味として保持されるべきpython2
です。私のコメントは、システムのPythonを回避しようとするのではなく、アプリケーション固有の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
エイリアスを回避する別の方法は\
、コマンドの前に使用することです。
$ \python --version
Python 2.7.6
現在のシェルでエイリアスを無効にするには、unalias
組み込みコマンドを使用します。
$ unalias python
$ python --version
Python 2.7.6
[2016年6月]移行に関する情報の推奨場所は、Ubuntu Pythonの公式ページです。
Ubuntu 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 373がアップストリームバグ修正メンテナンスサポートを2020年まで約束していることを考えると、Python 2.7はUbuntuでかなり長い間サポートされ、利用可能なままであると予想されます。
他のパッケージの依存関係のため、シンボリックリンクを変更することはお勧めしませんが、「ディストリビューションでPython 3をデフォルトの優先Pythonバージョンにするという進行中のプロジェクト目標があります」。
以下のようなCLIの使用については、@RaduRădeanu、私は、ユーザーの中にエイリアスを置くことをお勧めします~/.bashrc
、.bash_aliases
(を含む別のファイルを、ファイル~/.bash_profile
、少なくとも一度ロードされ、組織的な目的のために、ほとんどですが、プラットフォームによって異なる場合があります)。Python 仮想環境もうまく機能します。
エイリアスの例:
alias python=python3
または
alias python='/usr/bin/python3'
スクリプトは#!/usr/bin/env python3
相互互換性のようなものを引き続き使用する必要があります。
使用env
は、仮想環境との混合使用に適しています。
注(@wjandreaに感謝):エイリアスはbashランタイムの一部であり、ユーザー環境の一部ではありません。したがって、シバン(#!
)では使用できません。エイリアスpython = python3を好む場合、program.py
このようなエイリアスインタープリターを呼び出すことにより、シェバンのない一部を実行できますpython program.py
。エイリアシングは、3.4と3.6のようなpython3の複数のバージョンを一緒に使用するシステムにも役立つ場合があります。
python
、なぜに変更しないのかについては、変換が完了するまで実際には関係ありません。それでも、それはただの非問題になるかもしれません。
python3
ではなく、シバンで使用する必要がありますpython
。
コマンドラインツールを試すことができますupdate-alternatives
。
$ sudo update-alternatives --config python
「pythonの代替がない」というエラーが表示される場合は、次のコマンドを使用して自分で代替を設定します。
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
/usr/bin/python3
それに応じて、目的のPythonバージョンへのパスを変更します。
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
Ubuntu、およびその他のLinuxディストリビューションは、多くのアプリケーションとコマンドについて、依然としてPython 2.7に大きく依存しています。「python」のデフォルト参照をPython 3.xに変更すると、多くのPython関数がアサーションエラーをスローし始めます。
たとえば、Ubuntuでは、ファイルを直接編集してシェバンを「#!/ usr / bin / env python2.7」を参照するように変更しない限り、「pip」は正しく実行されません。Red Hat、Fedora、CentOSなどのRHEL(Red Hat Enterprise Linux)フレーバーでは、「Yum」コマンドもPython 2.7に依存しています。
ここでの私のポイントは、Python 3.xを参照するためにターミナルで「python」と入力できるように、大量のコードにアサーションエラーのスローを開始させることです。
ターミナルで 'python3'コマンドを使用し、Python 3.xファイルでshebang '#!/ usr / bin / env 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が付属しなくなったため、それほど悪くないはずです。
python
はPython 2であると想定されているため、いくつかの問題が発生する可能性があります。
python
->/usr/bin/python
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を使用します)
sudo ln -s /usr/bin/python3 /usr/local/bin/py
/ usr / bin / pythonと/ usr / bin / pipを単純に削除することは非常に役立ちます。これにより、すべてのプログラムが「python2」および「python3」コマンドに依存するようになります。
いくつかのオプションのパッケージや古いパッケージは動作に依存します#!/usr/bin/python
が、奇妙な、時にはデバッグが難しい間違いを犯し続けるよりも、それらのプログラムにパッチを提出したいです。
update-alternatives
互換性の問題のために異なる時間に必要になる可能性のあるプログラムの異なるバージョンを提供するために使用できます。
この回答は、たとえばgcc / g ++の異なるバージョンを同時に維持するための設定方法の良い例です。
python2.7とpython 3.3で同じことをするだけです