Pythonを用いた開発において、プロジェクトごとに依存ライブラリやPython自体のバージョンを管理することは、予期せぬバグを防ぎ、開発の再現性を高めるために不可欠です。

標準機能であるvenv(virtual environment)は、軽量かつ強力な仮想環境作成ツールですが、単にコマンドを実行するだけではシステムにインストールされているデフォルトのバージョンが選択されてしまいます。

本記事では、Pythonのvenvを使用して、特定のPythonバージョンを指定した仮想環境を作成する具体的な手順を徹底的に解説します。

Windows、macOS、LinuxそれぞれのOSにおける操作方法の違いや、バージョン管理をより効率化するための周辺ツールとの連携についても詳しく触れていきます。

Python venvの基本的な仕組みとバージョン指定の考え方

Pythonのvenvモジュールは、指定したディレクトリ内に独立したPython実行環境を構築します。

このとき、非常に重要なポイントがあります。

それは、venv自体にPythonのバイナリをダウンロードしてくる機能はないということです。

venvは、コマンドを実行した際に使用したPythonインタープリタをベースにして仮想環境を作成します。

つまり、特定のバージョンで仮想環境を作りたい場合は、あらかじめそのバージョンのPythonがシステムにインストールされている必要があります。

仮想環境を作成する際の基本的なコマンド構文は以下の通りです。

Shell
# 基本的な構文
[使用したいPythonのパスまたはコマンド] -m venv [仮想環境の名前]

この「使用したいPythonのパスまたはコマンド」の部分を適切に指定することで、任意のバージョンでの環境構築が可能になります。

WindowsでPythonバージョンを指定して仮想環境を作成する方法

Windows環境では、Pythonのインストール時に標準で付属するPythonランチャー(pyコマンド)を利用するのが最も簡単で確実な方法です。

Pythonランチャー(py)を利用する場合

Pythonランチャーは、PCにインストールされている複数のPythonバージョンを識別し、指定したバージョンで実行してくれる便利なツールです。

以下の手順で、バージョンを指定した仮想環境を作成します。

  1. インストールされているバージョンを確認する。
  2. 特定のバージョンを指定してvenvを実行する。
  3. 仮想環境を有効化(アクティベート)する。
PowerShell
# インストールされているPythonの一覧を表示
py --list

# Python 3.10を指定して「venv310」という名前の仮想環境を作成
py -3.10 -m venv venv310

# 仮想環境を有効化
.\venv310\Scripts\activate
実行結果
Installed Pythons found by py Launcher for Windows
 -V:3.12          Python 3.12 (64-bit)
 -V:3.11          Python 3.11 (64-bit)
 -V:3.10          Python 3.10 (64-bit)

(venv310) C:\Users\YourName\Project> python --version
Python 3.10.11

このように、py -[バージョン番号]という形式でコマンドを呼び出すだけで、簡単に切り替えが可能です。

直接パスを指定する場合

もしPythonランチャーが利用できない場合や、特定のディレクトリにインストールした特殊なPythonを使用したい場合は、実行ファイル(python.exe)のフルパスを直接指定します。

PowerShell
# フルパスを指定して仮想環境を作成
C:\Users\YourName\AppData\Local\Programs\Python\Python39\python.exe -m venv venv39

パスにスペースが含まれる場合は、ダブルクォーテーションで囲むことを忘れないようにしましょう。

macOSおよびLinuxでPythonバージョンを指定する方法

macOSやLinux(Ubuntuなど)では、通常python3.xのように、バージョン番号が付与されたコマンドがパス(PATH)に通っています。

これを利用してバージョン指定を行います。

バージョン付きコマンドを利用する

システムにインストールされているPythonのバージョンを確認し、目的のバイナリを呼び出します。

Shell
# インストールされているPythonを確認(例:Ubuntuなど)
ls /usr/bin/python*

# Python 3.11を指定して仮想環境「myenv」を作成
python3.11 -m venv myenv

# 仮想環境を有効化
source myenv/bin/activate

実行結果の例を以下に示します。

実行結果
(myenv) user@host:~/project$ python --version
Python 3.11.5

もし、特定のバージョンがインストールされていない場合は、パッケージマネージャー(aptやbrewなど)を使用して事前に対象バージョンをインストールしておく必要があります。

pyenvを併用した高度なバージョン指定

開発現場で最も推奨されるのが、pyenvとの組み合わせです。

pyenvを使用すると、システム環境を汚さずに複数のPythonバージョンを共存させることができます。

pyenvで特定のバージョンをインストールし、そのバージョンでvenvを作成する流れは以下の通りです。

Shell
# 必要なバージョンをインストール
pyenv install 3.12.0

# 一時的にそのバージョンをカレントディレクトリで使用するように設定
pyenv local 3.12.0

# そのバージョンのPythonでvenvを作成
python -m venv .venv

# バージョンの紐付けを解除(仮想環境が作成されれば不要なため)
pyenv local --unset

この方法の利点は、システムのPythonに依存せず、プロジェクトごとに厳密なパッチバージョンまで指定できる点にあります。

仮想環境のバージョンを正しく確認・検証する

仮想環境を作成した後は、意図した通りのバージョンで構築されているかを必ず確認しましょう。

確認にはいくつかの方法があります。

python –version コマンド

最も一般的な方法は、アクティベートした状態でバージョンを表示させることです。

Shell
# 仮想環境内で実行
python --version

pyvenv.cfg ファイルの確認

venvで作成されたディレクトリ内には、pyvenv.cfgという設定ファイルが生成されます。

このファイルには、ベースとなったPythonのパスやバージョン情報が記述されています。

INI
home = C:\Python312
include-system-site-packages = false
version = 3.12.1
executable = C:\Python312\python.exe
command = C:\Python312\python.exe -m venv C:\project\venv

このファイルのversion項目を見ることで、その環境がどのバージョンを基準に作られたかを正確に把握できます。

バージョン指定時に発生しやすいエラーと対処法

特定のバージョンでvenvを作成しようとした際、いくつか代表的なトラブルに遭遇することがあります。

「コマンドが見つからない」エラー

Windowsでpy -3.xを実行した際や、Linuxでpython3.xを実行した際に「command not found」や「Pythonが見つかりません」と表示される場合、そのバージョン自体がインストールされていない可能性が高いです。

対策として、まずは以下のサイトやコマンドからインストールを行ってください。

  • Windows:Python公式サイトからインストーラーをダウンロード。
  • macOS:brew install python@3.xを実行。
  • Linux:sudo apt install python3.x-venvを実行(Ubuntuなどではvenvモジュールが別パッケージになっていることがあります)。

指定したバージョンと異なる環境が作成される

これは、パスの優先順位(環境変数PATH)が影響している場合に起こります。

特に複数のPython管理ツールを併用している場合に発生しやすい現象です。

確実に指定したい場合は、相対パスやエイリアスに頼らず、絶対パス(フルパス)でPythonバイナリを指定してvenvコマンドを実行してください。

便利なTips:VS Codeでの仮想環境とバージョンの切り替え

Visual Studio Code(VS Code)を使用している場合、作成した特定のバージョンの仮想環境をエディタに認識させる必要があります。

  1. コマンドパレット(Ctrl + Shift + P)を開く。
  2. 「Python: Select Interpreter」を選択する。
  3. 作成した仮想環境のパス(./venv/bin/python など)を選択する。

これにより、VS Code上のターミナルを起動した際に自動的に仮想環境がアクティベートされ、インテリセンス(コード補完)も指定したバージョンのライブラリに基づいて動作するようになります。

各OSにおけるコマンド比較まとめ

OSごとのバージョン指定方法の違いを表にまとめました。

OS推奨される指定方法実行コマンド例
WindowsPythonランチャーを利用py -3.10 -m venv .venv
macOSHomebrew等で導入したバイナリpython3.11 -m venv .venv
Linuxバージョン付きバイナリ + venvpython3.9 -m venv .venv
全OS共通フルパスでの指定/usr/bin/python3.8 -m venv .venv

まとめ

Pythonのvenvでバージョンを指定して仮想環境を作成する方法は、一度理解してしまえば非常にシンプルです。

「仮想環境を作りたいバージョンのPythonで、-m venvを実行する」という原則さえ押さえておけば、どのような環境でも迷うことはありません。

Windowsであればpyコマンドを、macOSやLinuxであればバージョン番号付きのコマンドを活用しましょう。

また、より複雑なバージョン管理が必要な場合は、pyenvなどのツールと組み合わせることで、さらに柔軟な開発環境を構築できます。

適切なバージョン管理は、プロジェクトの安定性を高める第一歩です。

この記事で紹介した手順を参考に、クリーンで管理しやすい開発環境を手に入れてください。