Python バージョンを確認する方法を徹底解説
Pythonは、その汎用性と強力さから、Web開発、データサイエンス、機械学習、自動化スクリプトなど、多岐にわたる分野で利用されています。Pythonを使った開発を進める上で、最も基本的でありながら非常に重要な作業の一つが、「現在利用しているPythonのバージョンを知ること」です。しかし、一言でバージョン確認と言っても、状況や目的によって最適な方法は異なります。また、一台のコンピュータに複数のPythonバージョンや仮想環境が存在することも珍しくありません。
この記事では、Pythonのバージョンを確認するためのあらゆる方法を、初心者から経験者まで理解できるように徹底的に解説します。なぜバージョン確認が重要なのかという理由から始まり、コマンドライン、Pythonスクリプト内、仮想環境、開発ツール、さらには複数のバージョン管理ツールまで、考えられるすべてのシナリオにおける確認方法を、具体的なコマンドやコード例、その出力結果とともに詳細に説明します。約5000語を費やして、Pythonバージョン確認に関するあなたの疑問を解消することを目指します。
1. なぜPythonのバージョン確認が重要なのか?
Pythonのバージョンを確認することがなぜそれほど重要なのでしょうか?その理由はいくつかあります。
1.1. 互換性の問題
最も一般的な理由の一つは、互換性です。Pythonのバージョン間には、特にPython 2とPython 3の間には大きな非互換性があります。Python 3はPython 2の後継として開発され、多くの言語仕様が変更されました。例えば、print
文が関数になったり、文字列の扱いや整数の除算の挙動が変わったりしました。Python 2で書かれたコードは、修正なしにPython 3で実行できないことがほとんどです。
さらに、Python 3のバージョン間でも、新しいバージョンで導入された機能や、古いバージョンで非推奨・削除された機能があります。例えば、Python 3.8でセイウチ演算子 (:=
) が導入されたり、Python 3.9で辞書のマージ演算子 (|
) が追加されたりしました。これらの機能を使ったコードは、それよりも古いバージョンでは実行できません。
あなたが実行しようとしているスクリプトやインストールしようとしているライブラリが、特定のPythonバージョンを要求している場合、現在のPythonバージョンがその要件を満たしているかを確認する必要があります。
1.2. ライブラリやフレームワークのサポート状況
ほとんどのPythonライブラリやフレームワークは、サポートするPythonのバージョン範囲を明確に定めています。例えば、あるライブラリは「Python 3.6以降が必要」といった制約を持つ場合があります。あなたが利用しているPythonのバージョンが、必要なライブラリのサポート範囲外である場合、インストールや実行時にエラーが発生したり、予期せぬバグに遭遇したりする可能性があります。プロジェクトを開始する際や、新しいライブラリを導入する際には、常にPythonバージョンとライブラリの互換性を確認することが不可欠です。
1.3. セキュリティの更新とバグ修正
Pythonの各バージョン(特にマイクロバージョン)は、定期的にセキュリティ上の脆弱性の修正やバグ修正が行われます。これらの更新を含む最新のバージョンを利用することは、より安全で安定した開発環境を維持するために重要です。公式にサポートが終了したバージョン(EOL – End Of Life)を使用し続けることは、セキュリティリスクを高めることにつながります。
1.4. 特定の機能や最適化の利用
Pythonの新しいバージョンでは、パフォーマンスの最適化や新しい組み込み関数、標準ライブラリの改善などが含まれることがあります。これらの新機能や改善を利用するためには、対応するバージョンを使用する必要があります。
1.5. 環境の一貫性
チームで開発を行う場合、開発メンバー間で異なるPythonバージョンを使用していると、環境の違いによる問題が発生しやすくなります。「私の環境では動くのに!」といった状況を避けるためにも、開発環境のPythonバージョンを統一したり、プロジェクトごとにバージョンを固定したりすることが推奨されます。この「プロジェクトごとにバージョンを固定する」という目的で、仮想環境やバージョン管理ツール(pyenvなど)が利用されます。
1.6. 開発環境の確認
IDE(統合開発環境)やエディタの設定で、どのPythonインタプリタ(実行環境)が使用されているかを確認するためにも、バージョン確認は必要です。間違ったインタプリタを選択していると、コードの実行やデバッグが正しく行えません。
これらの理由から、Pythonのバージョン確認は、開発の効率、安定性、セキュリティを確保するための基本中の基本と言えます。
2. 基本的な確認方法
最も手軽で一般的なPythonのバージョン確認方法を紹介します。
2.1. コマンドライン (CLI) での確認
コマンドラインインタフェース(ターミナル、コマンドプロンプトなど)は、Pythonのバージョンを確認する最も基本的な方法です。
2.1.1. python --version
または python -V
コマンドラインを開き、以下のコマンドを実行します。
bash
python --version
または
bash
python -V
多くの環境では、これらのコマンドはシステムにインストールされているPythonインタプリタのバージョンを表示します。
出力例:
Python 3.9.7
または
Python 3.10.2
-
--version
と-V
の違い: どちらも同じ目的で使用できます。-V
はより短いため、好んで使われることがあります。歴史的には、多くのコマンドラインツールで-v
がverbose(詳細出力)に使用されることが多かったため、バージョン確認には-V
(大文字) が使われる傾向にありました。Pythonのコマンドラインオプションでは、-V
はバージョン情報出力、-v
はインタプリタのトレースなどの詳細出力に使われます。--version
はより明示的なオプション名です。 -
注意点: このコマンドがどのPythonのバージョンを表示するかは、その環境のPATH設定に依存します。コンピュータに複数のPythonがインストールされている場合、PATH環境変数で最初に検索されるディレクトリにある
python
という名前の実行ファイルが使用されます。
2.1.2. python3 --version
または python3 -V
macOSや多くのLinuxディストリビューションでは、システムにPython 2とPython 3の両方がインストールされている場合があります。このような環境では、python
コマンドがPython 2を指し、python3
コマンドがPython 3を指すように設定されていることがよくあります。
Python 3のバージョンを明示的に確認したい場合は、以下のコマンドを使用します。
bash
python3 --version
または
bash
python3 -V
出力例:
Python 3.10.2
このコマンドが機能しない場合(command not found: python3
など)は、python3
という名前で実行ファイルが登録されていないか、PATHが通っていない可能性があります。
2.2. Pythonスクリプト内での確認
実行中のPythonスクリプトの中で、そのスクリプトを実行しているPythonインタプリタのバージョンを確認することもできます。これは、プログラムのロジック内で特定のバージョンに依存する処理を分岐させたい場合などに非常に便利です。
2.2.1. sys
モジュールの利用
Pythonの標準ライブラリである sys
モジュールは、インタプリタに関する情報を提供します。
-
sys.version
:実行中のPythonインタプリタに関する詳細なバージョン文字列を取得できます。これにはバージョン番号だけでなく、ビルド情報、コンパイラ情報などが含まれる場合があります。
python
import sys
print(sys.version)出力例:
3.10.2 (main, Jan 15 2022, 17:12:38) [GCC 11.2.0]
この出力は人間が読むには適していますが、プログラム内でバージョン番号だけを抽出して比較する場合には、文字列のパースが必要になるため少し扱いづらいかもしれません。
-
sys.version_info
:バージョン情報をメジャー、マイナー、マイクロ、リリースレベル、シリアルの各要素に分解したタプルとして取得できます。プログラム内でバージョンによる条件分岐を行う際に非常に便利です。
python
import sys
print(sys.version_info)出力例:
sys.version_info(major=3, minor=10, micro=2, releaselevel='final', serial=0)
このタプルは要素ごとにアクセスできます (
sys.version_info.major
,sys.version_info.minor
など) し、他のタプルとの比較演算子(<
,>
,<=
,>=
など)を使用して、バージョンの大小を簡単に比較できます。sys.version_info
を使ったバージョン比較の例:Python 3.8以上の機能を使いたい場合:
“`python
import sysif sys.version_info >= (3, 8):
print(“Python 3.8 以上を使用しています。”)
# Python 3.8+ の機能を利用するコード
print(f”Python バージョン: {sys.version_info.major}.{sys.version_info.minor}”)
else:
print(“Python 3.8 未満を使用しています。”)
# 下位互換性のあるコード
print(f”Python バージョン: {sys.version_info.major}.{sys.version_info.minor}”)
“`この
sys.version_info
を利用した比較は、Pythonのバージョン依存機能を扱う上で非常に一般的で推奨される方法です。
2.2.2. platform
モジュールの利用
platform
モジュールは、実行環境のプラットフォームに関する情報を提供します。Pythonのバージョン情報もここから取得できます。
-
platform.python_version()
:バージョン情報を
major.minor.micro
という形式の文字列でシンプルに取得できます。sys.version
よりも短く、バージョン番号だけが必要な場合に便利です。python
import platform
print(platform.python_version())出力例:
3.10.2
-
platform.python_implementation()
:実行中のPythonインタプリタの実装名を取得します。標準のCPython(C言語で書かれたPython)以外にも、PyPy(JITコンパイラを持つ高速な実装)、Jython(Java VM上で動作)、IronPython(.NET CLR上で動作)などがあります。ライブラリによっては特定の実装でのみ動作するものもあるため、これも重要な情報です。
python
import platform
print(platform.python_implementation())出力例:
CPython
-
platform.python_build()
:ビルド番号とビルド日時をタプルで取得します。
python
import platform
print(platform.python_build())出力例:
('main', 'Jan 15 2022 17:12:38')
-
platform.python_compiler()
:Pythonインタプリタがビルドされた際に使用されたコンパイラの情報を取得します。
python
import platform
print(platform.python_compiler())出力例:
GCC 11.2.0
platform
モジュールは、より広範なシステム情報の一部としてPythonのバージョンを取得したい場合に役立ちます。
3. 複数のPython環境での確認
現代のPython開発では、一台のコンピュータに複数のPythonインタプリタが存在するのが一般的です。これは、システムデフォルトのPython、パッケージマネージャー(Homebrew, aptなど)でインストールされたPython、そしてプロジェクトごとに分離された仮想環境やバージョン管理ツールによってインストールされたPythonなどがあるためです。
複数の環境が存在する場合、単に python --version
と打つだけでは、意図したPythonのバージョンが表示されないことがあります。現在「アクティブ」になっている、または「これから使用したい」Pythonのバージョンを正確に確認する方法を学ぶことが重要です。
3.1. PATH環境変数と which
/ where
コマンド
コマンドラインで python
や python3
とタイプしたときに実行されるのは、オペレーティングシステムのPATH環境変数で指定されたディレクトリの中から、最初に見つかった実行ファイルです。
-
Linux/macOS:
which
コマンドを使って、どの実行ファイルが使われているかを確認できます。bash
which python出力例:
/usr/local/bin/python
bash
which python3出力例:
/usr/local/bin/python3
この出力されたパスにある実行ファイルに対して
--version
オプションをつけることで、より確実にその実行ファイルのバージョンを確認できます。bash
/usr/local/bin/python --version
/usr/local/bin/python3 --version -
Windows:
where
コマンドを使って、どの実行ファイルが使われているか(またはPATH上に複数存在するか)を確認できます。cmd
where python出力例:
C:\Users\YourUser\AppData\Local\Programs\Python\Python310\python.exe
C:\Python27\python.exewhere
コマンドは、PATH上で見つかったすべてのpython
実行ファイルを列挙します。このリストの上から順にコマンド検索が行われます。最初のパスにある実行ファイルが、単にpython
とタイプしたときに実行されるものです。
3.2. 仮想環境 (Virtual Environments)
仮想環境は、プロジェクトごとに独立したPython実行環境を作成するためのツールです。これにより、プロジェクトAではPython 3.8と特定のライブラリバージョン、プロジェクトBではPython 3.10と別のライブラリバージョン、といったように、依存関係の衝突を避けることができます。
仮想環境をアクティベート(有効化)すると、その環境にインストールされているPythonインタプリタが、システムのPATHよりも優先されるようになります。したがって、仮想環境をアクティベートした状態でバージョン確認を行うことが重要です。
3.2.1. venv
(Python 3.3以降の標準ライブラリ)
venv
はPython 3に標準で含まれる仮想環境作成ツールです。
-
仮想環境の作成:
bash
python -m venv myenv(ここで使用される
python
は、仮想環境を作成したいバージョンを指している必要があります。) -
仮想環境のアクティベート:
-
Linux/macOS:
bash
source myenv/bin/activate -
Windows (Command Prompt):
cmd
myenv\Scripts\activate.bat -
Windows (PowerShell):
powershell
myenv\Scripts\Activate.ps1
アクティベートに成功すると、多くの場合プロンプトの先頭に仮想環境の名前(例:
(myenv)
)が表示されます。 -
-
アクティベートした環境でのバージョン確認:
仮想環境がアクティベートされた状態で、以下のコマンドを実行します。
bash
python --versionこれは、その仮想環境を作成する際に基になったPythonインタプリタのバージョンを表示します。
which python
やwhere python
と打ってみると、仮想環境内のbin
またはScripts
ディレクトリにあるpython
実行ファイルが指されていることが確認できます。 -
仮想環境のディアクティベート:
作業が終わったら、以下のコマンドで仮想環境を解除できます。
bash
deactivateプロンプトから仮想環境の名前表示が消え、システムのPythonに戻ります。
3.2.2. virtualenv
(外部ライブラリ)
virtualenv
は、venv
が標準化される前から広く使われている仮想環境ツールです。基本的な使い方は venv
と似ています。まず pip install virtualenv
でインストールが必要です。
-
仮想環境の作成:
bash
virtualenv myenv特定のPythonバージョンを指定して作成することもできます(例:
virtualenv -p /usr/local/bin/python3.9 myenv
)。 -
仮想環境のアクティベート:
venv
と同じコマンドを使用します。- Linux/macOS:
source myenv/bin/activate
- Windows (Command Prompt):
myenv\Scripts\activate.bat
- Windows (PowerShell):
myenv\Scripts\Activate.ps1
- Linux/macOS:
-
バージョン確認: アクティベート後に
python --version
を実行します。 -
ディアクティベート:
deactivate
を実行します。
3.2.3. Conda 環境
Condaは、Pythonだけでなく、様々な言語やパッケージを管理できる環境管理システムです。特に科学技術計算やデータサイエンス分野で広く利用されています。AnacondaやMinicondaをインストールすると利用できます。
-
環境リストの確認:
現在存在するConda環境とそのパスを確認できます。
bash
conda info --envs出力例:
“`
conda environments:
base * /Users/youruser/miniconda3
myenv_39 /Users/youruser/miniconda3/envs/myenv_39
myenv_310 /Users/youruser/miniconda3/envs/myenv_310
“`アスタリスク (
*
) が付いている環境が現在アクティブな環境です。 -
特定の環境のPythonバージョン確認 (アクティベート前):
conda list
コマンドを使って、特定の環境にインストールされているパッケージリストを確認できます。Pythonもパッケージの一つとして表示されます。bash
conda list python -n myenv_310(
-n myenv_310
で環境名を指定)出力例:
“`
packages in environment at /Users/youruser/miniconda3/envs/myenv_310:
Name Version Build Channel
python 3.10.2 h95d41f0_0
“` -
環境のアクティベート:
バージョンを確認したいConda環境をアクティベートします。
bash
conda activate myenv_310多くの場合、プロンプトの先頭に環境名が表示されます。
-
アクティベートした環境でのバージョン確認:
アクティベートされた状態で、通常のコマンドを実行します。
bash
python --versionまたは
bash
python -Vこれは、アクティベートされたConda環境にインストールされているPythonのバージョンを表示します。
which python
またはwhere python
で、Conda環境内の実行ファイルが指されていることを確認できます。 -
ディアクティベート:
bash
conda deactivate
CondaはPythonバージョンだけでなく、依存する様々なライブラリ(特にC/C++で書かれたもの)も含めて環境を管理できるため、より複雑なプロジェクトで重宝されます。
3.2.4. pyenv
pyenvは、複数のPythonバージョンをインストールし、簡単に切り替えるためのバージョン管理ツールです。システム全体、ディレクトリごと、またはシェルセッションごとに使用するPythonバージョンを指定できます。
-
インストールされているPythonバージョンの確認:
pyenvで管理されている、インストール済みのPythonバージョンと、現在使用されているバージョンを確認できます。
bash
pyenv versions出力例:
* system (set by /Users/youruser/.pyenv/version)
3.8.12
3.9.7
3.10.2
myenv_310*
が付いているバージョンが現在アクティブなバージョンです。system
は、pyenvが管理していないシステムデフォルトのPythonを指します。myenv_310
のように、pyenvはvenv
やvirtualenv
で作成した仮想環境も管理下に置くことができます。
-
現在使用されているPython実行ファイルとバージョンの確認:
pyenv version
コマンドは、現在どのPython実行ファイルが使われていて、そのバージョンが何かを表示します。bash
pyenv version出力例:
3.10.2 (set by /Users/youruser/.pyenv/version)
-
python --version
コマンドの挙動:pyenvがアクティブな環境では、
python --version
と打つと、pyenv versions
で*
が付いているバージョン、またはpyenv version
で表示されるバージョンの情報が表示されます。これは、pyenvがPATHを操作して、指定されたバージョンのPython実行ファイルが優先的に見つかるようにしているためです。which python
で、pyenvのshimsディレクトリにあるpython
実行ファイルが指されていることが確認できます。
pyenvは、特に複数のプロジェクトで異なるPythonバージョンを使う必要がある開発者にとって非常に便利なツールです。
3.3. Docker コンテナ内での確認
アプリケーションをDockerコンテナ内で実行している場合、そのコンテナ内で使用されているPythonのバージョンを確認する必要があります。ホストマシンのPythonバージョンは関係ありません。
-
コンテナの実行または接続:
実行中のコンテナがある場合は、
docker exec
コマンドでコンテナ内に入ります。bash
docker exec -it <container_id_or_name> bash(
bash
の代わりにsh
など、コンテナ内のシェルを指定します。)コンテナが実行中でない場合や新しく起動する場合は、Dockerfileや
docker run
コマンドを確認します。 -
コンテナ内でのバージョン確認:
コンテナのシェルに入ったら、通常のコマンドラインからの確認方法が使えます。
bash
python --versionまたは
bash
python3 --versionこれで、そのコンテナイメージにインストールされているPythonのバージョンが確認できます。
-
Dockerfileでの確認:
そもそも、コンテナイメージの作成元であるDockerfileを確認するのが最も確実です。Dockerfileには通常、ベースイメージとして使用するPythonバージョンが指定されています。
“`dockerfile
FROM python:3.9-slim… rest of the Dockerfile
“`
この例では、Python 3.9のslimイメージをベースにしていることがわかります。タグ(
:3.9-slim
)によってバージョンが指定されます。
Dockerコンテナはホスト環境から完全に隔離されているため、コンテナ内部の環境を確認するには、コンテナ内に入るか、コンテナの定義(Dockerfile)を参照する必要があります。
4. 開発ツール・IDEでの確認
多くの統合開発環境(IDE)や高度なエディタは、Python開発を支援するための機能を提供しており、使用するPythonインタプリタの設定と確認が可能です。
4.1. VS Code (Visual Studio Code)
VS Codeは、Python開発に広く利用されているエディタです。インストールされているPython拡張機能を使用すると、簡単に使用するインタプリタを選択・確認できます。
-
ステータスバー:
通常、VS Codeウィンドウの左下にあるステータスバーに、現在選択されているPythonインタプリタのバージョンが表示されます。クリックすると、他のインタプリタを選択するためのパレットが表示されます。 -
コマンドパレット:
コマンドパレット(Ctrl+Shift+P
またはCmd+Shift+P
)を開き、「Python: Select Interpreter」と入力してコマンドを選択します。利用可能なPythonインタプリタのリストが表示され、それぞれのバージョンとパスが確認できます。ここから使用したいインタプリタを選択することも可能です。 -
設定ファイル (
settings.json
):
ワークスペースまたはユーザー設定で、使用するPythonインタプリタのパスを明示的に指定できます。json
{
"python.defaultInterpreterPath": "/usr/local/bin/python3.10"
}または、仮想環境やConda環境内のPythonを指定することもよくあります。
json
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python"
}この設定ファイルを確認することで、VS CodeがどのPythonを使用するように設定されているかを知ることができます。
4.2. PyCharm
PyCharmは、Pythonに特化した強力なIDEです。プロジェクトごとにPythonインタプリタを設定し、管理できます。
- Project Interpreter 設定:
Settings/Preferences(Windows/Linux:File
>Settings
、macOS:PyCharm
>Preferences
)を開き、Project: <Your Project Name>
>Python Interpreter
に移動します。
ここで、現在プロジェクトで使用されているPythonインタプリタのバージョン、パス、およびインストールされているパッケージリストを確認できます。
右側の歯車アイコンをクリックすると、新しいインタプリタの追加(仮想環境、Conda環境、システムインタプリタなど)や設定を行うことができます。
PyCharmでは、プロジェクト作成時に仮想環境を自動的に作成したり、既存の環境を選択したりできるため、使用するPythonバージョンが明確になりやすいです。
4.3. その他のIDEやエディタ
Jupyter Notebook, IDLE, Spyderなど、他のPython開発環境でも同様に、設定画面や情報表示エリアで現在使用されているPythonインタプリタのバージョンを確認できる機能が提供されていることが多いです。使用しているツールのドキュメントやメニューを確認してください。
5. パッケージのバージョンとPythonバージョンの関係
Pythonパッケージ(ライブラリ)は、特定のPythonバージョンをサポートするようにビルドされています。あるパッケージがあなたのPythonバージョンで利用可能か、または利用しようとしているバージョンが特定のパッケージをサポートしているかを確認することも重要です。
-
PyPI (Python Package Index):
Pythonの公式パッケージリポジトリであるPyPIでパッケージを検索すると、通常、そのパッケージがサポートするPythonバージョンの情報が記載されています(例: “Requires: Python >= 3.6″)。 -
パッケージのメタデータ:
パッケージには、そのパッケージがどのPythonバージョンで動作するかを示すメタデータが含まれています。これはsetup.py
やpyproject.toml
ファイルのpython_requires
またはrequires
フィールドに記述されます。pipなどのパッケージマネージャーは、この情報に基づいてインストール可能なパッケージバージョンを判断します。 -
pip check
:
インストールされているパッケージ間の依存関係の整合性を確認するコマンドです。Pythonバージョンとの非互換性も検出される場合があります。bash
pip check問題がなければ
No broken requirements found.
と表示されます。
パッケージのインストールや依存関係の解決で問題が発生した場合、原因がPythonバージョンとの非互換性にある可能性も考慮し、現在使用しているPythonバージョンとパッケージの要求バージョンを確認することがトラブルシューティングの鍵となります。
6. Pythonバージョンに関する重要な知識
バージョン確認の方法だけでなく、Pythonのバージョン自体に関する知識も持っておくと、開発がよりスムーズに進みます。
6.1. Python 2 と Python 3
前述の通り、Python 2とPython 3は互換性のない大きな違いがあります。Python 2は2020年1月1日に公式サポートが終了(EOL)しました。現在では、新規プロジェクトでPython 2を選択する理由はほとんどありません。既存のPython 2コードを保守する必要がある場合を除き、Python 3を使用すべきです。Python 3のバージョン確認を行う際には、システムにPython 2がまだ存在しないか注意が必要です。
6.2. メジャー.マイナー.マイクロ (Major.Minor.Micro)
Pythonのバージョン番号は、通常 メジャー.マイナー.マイクロ
の形式に従います(例: 3.10.2)。
- メジャーバージョン (Major): 後方互換性のない大規模な変更(例: Python 2からPython 3)。
- マイナーバージョン (Minor): 新しい機能の追加やAPIの変更など、後方互換性のある比較的大きな変更(例: 3.9から3.10)。
- マイクロバージョン (Micro) またはパッチバージョン (Patch): バグ修正やセキュリティパッチなど、後方互換性を維持したまま行われる小さな変更(例: 3.10.1から3.10.2)。
通常、開発者は特定のメジャーおよびマイナーバージョン(例: Python 3.10)を使用し、マイクロバージョンは最新のもの(バグ修正やセキュリティアップデートが適用されたもの)を選ぶことが多いです。
6.3. EOL (End Of Life)
Pythonの各バージョンにはサポート期限(EOL)があります。EOLを過ぎたバージョンは、公式なバグ修正やセキュリティアップデートが提供されなくなります。これは重大なセキュリティリスクにつながるため、EOLを迎えたバージョンを使用し続けることは避けるべきです。
Pythonの公式ウェブサイト (python.org) の Downloads > Status of Python branches ページで、各バージョンのサポート状況とEOL日を確認できます。開発に使用するPythonバージョンを選ぶ際には、このEOL情報を考慮に入れることが非常に重要です。例えば、長期プロジェクトの場合は、サポート期間が十分に長いバージョンを選択するのが賢明です。
6.4. 新機能と非推奨機能
各マイナーバージョンアップでは、新しい機能が追加されたり、古い機能が非推奨になったり、削除されたりします。これらの変更はPython Enhancement Proposals (PEP) で提案され、Pythonの公式ドキュメントで詳細に記述されます。特定のバージョンで導入された機能を利用したい場合や、古い機能が原因でコードが動作しない場合は、ドキュメントの「What’s New in Python X.Y」セクションを参照すると良いでしょう。
7. 状況に応じた確認方法の選び方
これまでに紹介した様々な確認方法を、どのような状況で使うべきかまとめます。
-
単に現在コマンドラインで使われるPythonのバージョンを知りたい:
最も手軽なのはpython --version
またはpython -V
です。ただし、これが必ずしも意図したPythonであるとは限らないことに注意が必要です。Python 3を明示したい場合はpython3 --version
を試します。 -
コマンドラインで使われるPythonの実行ファイルのパスを知りたい:
Linux/macOSならwhich python
(またはwhich python3
)、Windowsならwhere python
を使います。これにより、PATH上でどのPython実行ファイルが優先されているかを知ることができます。 -
プログラムの中で実行中のPythonのバージョンによって処理を分けたい:
sys.version_info
を使います。タプル形式でバージョン情報が得られるため、比較演算子で簡単にバージョンを比較できます。 -
プログラムの中で詳細なバージョン情報(ビルド、コンパイラなど)や実装を知りたい:
sys.version
(詳細な文字列) またはplatform
モジュールの関数 (platform.python_version()
,platform.python_implementation()
など) を使います。 -
仮想環境(venv, virtualenv)のPythonバージョンを知りたい:
まずsource myenv/bin/activate
(Linux/macOS) またはmyenv\Scripts\activate
(Windows) で仮想環境をアクティベートしてから、python --version
を実行します。which python
やwhere python
で、仮想環境内のパスが表示されるか確認することも有効です。 -
Conda 環境のPythonバージョンを知りたい:
conda info --envs
で環境リストを確認し、対象の環境名を特定します。アクティベートせずにバージョンだけ知りたい場合はconda list python -n <env_name>
を使います。アクティベートして確認したい場合はconda activate <env_name>
の後、python --version
を実行します。 -
pyenv で管理しているPythonバージョンを知りたい、または切り替えたい:
pyenv versions
でインストール済みバージョンと現在のバージョンを確認します。pyenv version
で現在使用されているPython実行ファイルとバージョンを確認できます。 -
Docker コンテナ内のPythonバージョンを知りたい:
docker exec -it <container> bash
でコンテナ内に入り、python --version
を実行します。または、DockerfileのFROM
行を確認します。 -
使用しているIDE/エディタがどのPythonを使っているか知りたい:
IDE/エディタの設定画面(例: VS Codeのステータスバー/コマンドパレット/設定、PyCharmのProject Interpreter設定)を確認します。
このように、目的や作業環境によって最適な確認方法が異なります。これらの方法を理解しておけば、様々な状況で迷うことなくPythonのバージョンを特定できるようになります。
8. トラブルシューティング
Pythonバージョン確認に関連して発生しがちな問題とその対処法を紹介します。
-
command not found: python
またはcommand not found: python3
:- 原因: Pythonがインストールされていない、またはPython実行ファイルのディレクトリがシステムのPATH環境変数に含まれていない。
- 対処法: Pythonをインストールします。インストール時に「Add Python to PATH」のようなオプションがあれば有効にします。手動でPATHに追加する方法はOSによって異なります(Windowsのシステム環境変数設定、Linux/macOSの
.bashrc
,.zshrc
などのシェル設定ファイル編集)。 - 仮想環境やpyenvを使用している場合は、それが正しくアクティベートされているか確認します。
-
python --version
が予期しないバージョンを表示する:- 原因: システムに複数のPythonがインストールされており、PATHの順番によって意図しないバージョンが優先されている。または、仮想環境やpyenvなどのバージョン管理ツールが意図せず有効になっている、あるいは無効になっている。
- 対処法:
which python
(Linux/macOS) またはwhere python
(Windows) で、実際に実行されているPython実行ファイルのパスを確認します。そのパスが意図したものでない場合、PATH環境変数の設定を見直すか、仮想環境やバージョン管理ツールの設定を確認します。特定のバージョンの実行ファイルを使いたい場合は、フルパスで指定するか、適切な仮想環境やバージョンをアクティベートします。
-
python
コマンドとpython3
コマンドがある(あるいは片方しかない):- 原因: システム設定(特にLinux/macOS)により、
python
がPython 2を、python3
がPython 3を指しているか、あるいはPython 3のみがpython3
として登録されている。 - 対処法:
python --version
とpython3 --version
の両方を実行して、それぞれのバージョンを確認します。Python 3を使用したい場合は、常にpython3
コマンドを使うか、仮想環境などを利用してpython
コマンドがPython 3を指すように設定します。
- 原因: システム設定(特にLinux/macOS)により、
-
仮想環境がうまく機能しない、アクティベートしてもバージョンが変わらない:
- 原因: 仮想環境の作成時にエラーがあった、アクティベートコマンドが間違っている、シェルに環境変数が正しく反映されていない。
- 対処法: 仮想環境を一度削除し、再度作成し直してみます。アクティベートコマンドがOSやシェル(bash, zsh, fish, cmd, PowerShellなど)に対して正しいか確認します。アクティベート後に
which python
やwhere python
で、仮想環境内のパスが表示されるか確認します。
-
Windowsで
source
コマンドがないと言われる:- 原因:
source
はLinux/macOSで使われるシェルコマンドです。WindowsのCommand PromptやPowerShellでは異なるコマンドを使います。 - 対処法: WindowsのCommand Promptでは
myenv\Scripts\activate.bat
、PowerShellではmyenv\Scripts\Activate.ps1
を使用します。
- 原因:
これらのトラブルシューティングの多くは、「どのPython実行ファイルが実際に実行されているのか」を正確に把握することで解決できます。which
や where
コマンドは、この把握に非常に役立ちます。
9. まとめ
この記事では、Pythonのバージョンを確認するための多岐にわたる方法を、その重要性、具体的な手順、そして関連する知識とともに詳細に解説しました。
Pythonのバージョン確認は、単に番号を知るだけでなく、使用するライブラリとの互換性を確保し、セキュリティリスクを回避し、安定した開発環境を維持するための基本的なステップです。一台のコンピュータに複数のPython環境が存在することが一般的な現代の開発環境では、コマンドライン、スクリプト内、仮想環境、バージョン管理ツール、IDEなど、状況に応じた適切な確認方法を選択できることが重要です。
- 最も手軽なコマンドラインでの確認 (
python --version
,python -V
,python3 --version
)。 - プログラムでバージョンによる分岐を行うための
sys.version_info
や詳細情報のためのsys.version
、platform
モジュール。 - 複数のPython環境が混在する場合の
which
/where
コマンドや、仮想環境(venv
,virtualenv
,conda
)、バージョン管理ツール(pyenv
)での確認方法。 - IDEやDockerコンテナ内での確認方法。
- バージョンに関わる重要な知識(EOL, バージョニング規則など)。
これらの方法を使いこなすことで、あなたはPython開発においてバージョンに関する問題に効率的に対処し、より堅牢で互換性の高いコードを書くことができるようになるでしょう。開発の出発点として、そして問題発生時の診断として、常に現在のPythonバージョンを意識する習慣をつけましょう。
Happy Coding!