HOWTO · Python
Python 2 と 3 を切り替える
このチュートリアルでは、Python 2 と 3 を切り替える方法について説明します。
このページの内容
目的のインタープリターでプロジェクトを実行するには、Python 2またはPython 3のコマンドを直接使うか、プロジェクト用の環境で選択します。必要なインタープリターがインストールされていることが前提です。Python 2は、Python.orgのPython 2サンセット告知のとおり、2020年1月にサポートを終了しました。レガシーコードで必要な場合に限って使用してください。インタープリターを選んでも、バージョン間でコードが変換されたり、セキュリティサポートが復活したりするわけではありません。
利用可能な Python 2 と Python 3 のインタープリターを確認する
LinuxとmacOSでは、python2 --versionとpython3 --versionを実行して、利用できるコマンドを確認します。単独のpythonコマンドが指すバージョンは、オペレーティングシステムやインストール状況によって異なります。プロジェクトに必要なバージョンが選ばれるとは限らないため、決めつけないでください。コマンドが見つからない場合は、オペレーティングシステムとプロジェクトに適した方法でインタープリターをインストールします。利用できる方法はプラットフォームによって異なります。
Windowsでは、Pythonランチャーを使ってインストール済みのバージョンを選べます。コマンドプロンプトまたはPowerShellでpy -2 --versionとpy -3 --versionを実行します。これらのコマンドを使うには、対応するバージョンがインストールされ、ランチャーから認識されている必要があります。
Linux と macOS で Python 2 または Python 3 を実行する
対話型のPython 2を起動するにはpython2、Python 3を起動するにはpython3を使います。app.pyというスクリプトを実行する場合は、それぞれpython2 app.pyまたはpython3 app.pyを実行します。これらの明示的なコマンドは、その実行時に使うインタープリターを選び、システム全体の既定値は変更しません。インストール環境でコマンド名が異なる場合は、インストールしたバージョンの実行ファイルのパスを使ってください。
Windows で Python 2 または Python 3 を実行する
Python 2を起動するにはpy -2、Python 3を起動するにはpy -3を使います。スクリプトはpy -2 app.pyまたはpy -3 app.pyで実行できます。ランチャーが要求したバージョンを利用できないと表示する場合は、そのバージョンがインストールされ、ランチャーに登録されているか確認してください。あるシェルで動作するコマンドが、シェルのPATH設定に依存している場合もあります。
プロジェクトごとにインタープリターと依存関係を分離する
仮想環境を使うと、あるプロジェクトにインストールしたパッケージをほかのプロジェクトから分離できます。使いたいインタープリターで環境を作成し、パッケージをインストールしたりプロジェクトを実行したりする前に、その環境を有効化します。Python 3には標準ライブラリのvenvがあり、たとえばpython3 -m venv .venvを実行すると、そのインタープリターにモジュールが含まれている場合に環境を作成できます。Python 2にはvenvがありません。レガシープロジェクトでは、そのPython 2インタープリター向けにインストールして設定した、virtualenvなどの互換性があるサードパーティー製ツールが必要になることがあります。利用可否や設定方法は、オペレーティングシステムとインストール済みツールによって異なります。
対応システムでは、pyenvなどのツールでプロジェクトごとにPythonのバージョンを選べます。また、Dockerを使うとコンテナーイメージ内にプロジェクトを隔離できます。どちらも追加設定が必要で、すべてのプラットフォームで利用可能なPython 2のビルドやイメージがあるとは限りません。環境の分離は依存関係の衝突を避けるのに役立ちますが、Python 2がサポート対象外であることは変わらず、信頼できない入力やネットワークにさらすと危険な場合があります。新しい開発にはPython 3を使ってください。
スクリプトが使用するインタープリターを確認する
スクリプトの実行に使うコマンドまたは有効化済みの環境で、python2 --version、python3 --version、py -2 --version、py -3 --versionのいずれかを実行し、バージョンを確認します。パッケージのインストールにも同じインタープリターを使います。python3 -m pip install PACKAGEはpipをPython 3に関連付け、Windowsランチャーが利用可能な場合はpy -2 -m pip install PACKAGEでPython 2を対象にできます。
次の短い確認コードをスクリプトに入れ、上で選んだコマンドで実行する方法もあります。実行中のインタープリターのメジャーバージョンを表示します。コード例に含まれるラベルと出力は英語のままです。
from __future__ import print_function
import sys
print("Python", sys.version_info[0])
Python 3
表示されたバージョンがプロジェクトで必要なものと異なる場合は、コマンドを変更するか、目的の環境を有効にしてから、もう一度確認してください。インタープリターの選択は、コードの実行に使うものを決めるだけです。Python 2の構文や依存関係をPython 3と互換にするものではありません。