はじめに
Pythonは、新しいバージョンをインストールしても古いバージョンが上書きされず、複数バージョンが共存します。これはPythonの便利な仕組みですが、慣れないうちは混乱のもとです。
- 今、どのバージョンのPythonで開発しているのか?
-
pip installしたモジュールは、どのバージョン環境に入ったのか? - プロジェクトごとにモジュールを分けたいけど、どうすればいい?
この記事では、Windows環境でのPython環境に関する操作を 初心者でもわかるように 一つずつ整理します。
この記事ではWindows環境を対象としています。
全体像 ― Pythonの環境構造
まず、Pythonの環境がどのような構造になっているかを図で確認しましょう。
Windowsに複数バージョンのPythonをインストールすると、それぞれ独立した環境として存在します。さらに各バージョンから 仮想環境(venv) を作成でき、プロジェクトごとにモジュールを分離できます。
PATH環境変数 ― python と打ったとき、どれが動くのか?
PATHとは
コマンドプロンプトで python と入力すると、Windowsは PATH環境変数 に登録されたフォルダを上から順に探し、最初に見つかった python.exe を実行します。
PATH の例:
C:\Python312\ ← ここに python.exe がある → これが実行される
C:\Python311\ ← ここにも python.exe があるが、上が優先
C:\Windows\System32\
...
つまり、PATHの 順番 によって、python で呼ばれるバージョンが変わります。
PATHの確認方法
コマンドプロンプトで以下のコマンドを実行すると、python コマンドがどの実行ファイルを指しているか確認できます。
where python
出力例:
C:\Python312\python.exe
C:\Python311\python.exe
C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe
一番上に表示されるものが、python と打ったときに実行されるバージョンです。
Pythonインストール時に「Add Python to PATH」にチェックを入れると、PATHにそのバージョンのパスが追加されます。複数バージョンをインストールすると、PATHの順序で優先バージョンが決まります。
pyランチャー ― バージョンを明示的に指定する
py と python の違い
Windowsでは py と python の2つのコマンドでPythonを起動できますが、仕組みが異なります。
| コマンド | 正体 | バージョン指定 | 動作の仕組み |
|---|---|---|---|
python |
python.exe |
できない | PATHを上から探して最初に見つかった python.exe を実行 |
py |
pyランチャー(py.exe) |
できる(py -3.12 など) |
インストール済みの全バージョンを把握し、指定したバージョンを実行 |
【python コマンドの場合】
python script.py
→ PATHの順番で決まる → どのバージョンが動くかは環境依存
【py コマンドの場合】
py -3.12 script.py
→ pyランチャーがPython 3.12を直接起動 → PATHに関係なく確実
つまり python はPATHの設定に左右されますが、py はPATHに依存せずバージョンを指定できます。
pyランチャーとは
pyランチャー(py コマンド)は、Windowsに複数バージョンのPythonがインストールされている場合に、バージョンを明示的に指定して実行できるツールです。Python 3.3以降のWindows版インストーラーに同梱されています。
PATHの順番に依存せず、確実に目的のバージョンを呼び出せるため、複数バージョンを使い分けるWindows環境では 必須ツール です。
インストール済みバージョンの一覧
py --list
出力例:
-V:3.12 * Python 3.12 (64-bit)
-V:3.11 Python 3.11 (64-bit)
-V:3.10 Python 3.10 (64-bit)
* が付いているバージョンがデフォルトで使われるバージョンです。
バージョンを指定してPythonを実行
# デフォルトバージョンで実行
py script.py
# Python 3.11 を指定して実行
py -3.11 script.py
# Python 3.10 を指定して実行
py -3.10 script.py
バージョンを指定してpipを実行
# Python 3.12 の pip を使ってインストール
py -3.12 -m pip install numpy
# Python 3.11 の pip を使ってインストール
py -3.11 -m pip install numpy
ここで使っている -m オプションは、Pythonのモジュールをスクリプトとして実行する という意味です。
py -3.12 -m pip install numpy
│ │ │ │
│ │ │ └── 実行するモジュール名(pip)
│ │ └───── -m: モジュールとして実行するオプション
│ └──────────── 使用するPythonバージョン
└─────────────── pyランチャー
-m pip と書くことで、指定したバージョンのPythonに紐づいた pip が確実に呼ばれます。単に pip install と打つと、PATHの設定次第で意図しないバージョンの pip が実行される可能性がありますが、py -3.12 -m pip ならその心配がありません。
-m はpip以外にも使えます。例えば py -3.12 -m venv .venv(仮想環境の作成)や py -3.12 -m http.server(簡易HTTPサーバーの起動)なども同じ仕組みです。
今、どの環境で開発しているか確認する
コマンドラインで確認
バージョンの確認方法はいくつかありますが、使うコマンドによって確認対象が異なります。
# ① python --version(PATHで優先されるPythonのバージョン)
python --version
# ② py --version(pyランチャーのデフォルトバージョン)
py --version
# ③ py -3.11 --version(指定したバージョン)
py -3.11 --version
| コマンド | 確認対象 |
|---|---|
python --version |
PATHで最初に見つかるPython のバージョン |
py --version |
pyランチャーのデフォルト(py --list で * が付いているもの)のバージョン |
py -3.11 --version |
指定したバージョン のPython |
python --version と py --version の結果が異なることがあります。これは、PATHの優先順位とpyランチャーのデフォルトが別々に管理されているためです。
# 例:結果が異なるケース
C:\> python --version
Python 3.11.7 ← PATHの先頭に Python 3.11 があるため
C:\> py --version
Python 3.12.1 ← pyランチャーのデフォルトは Python 3.12
今使っているPythonの実体を確認する(最も確実な方法)
バージョン番号だけでなく、どの場所のPythonが実行されているか をフルパスで確認できます。
# python コマンドが指すPythonの場所
python -c "import sys; print(sys.executable)"
# py コマンドが指すPythonの場所
py -c "import sys; print(sys.executable)"
出力例:
C:\> python -c "import sys; print(sys.executable)"
C:\Python311\python.exe ← PATHで優先される Python 3.11
C:\> py -c "import sys; print(sys.executable)"
C:\Python312\python.exe ← pyランチャーのデフォルト Python 3.12
仮想環境がアクティブな場合は、どちらも仮想環境内のパスが表示されます。
(.venv) C:\Projects\myproject> python -c "import sys; print(sys.executable)"
C:\Projects\myproject\.venv\Scripts\python.exe
「今どのPythonを使っているか分からなくなった」ときは、sys.executable でフルパスを確認するのが最も確実です。
VS Codeで確認
VS Codeでは、画面右下のステータスバーにPythonのバージョンが表示されています。
-
ステータスバーを確認:画面右下に
Python 3.12.xのように表示される - クリックすると:使用可能なPython環境の一覧が表示される
開発環境の切り替え
コマンドラインでの切り替え
コマンドラインでは、pyランチャーを使ってバージョンを切り替えます。
# Python 3.12 で対話モードを起動
py -3.12
# Python 3.11 で対話モードを起動
py -3.11
常に py -X.Y を付けることで、意図したバージョンで作業できます。
VS Codeでの切り替え
VS Codeでは、インタープリターの選択でPython環境を切り替えます。
-
Ctrl + Shift + Pでコマンドパレットを開く -
Python: Select Interpreterと入力して選択 - 使いたいPythonバージョン(または仮想環境)を選択
選択した環境は、そのワークスペース(フォルダ)単位で記憶されます。別のフォルダを開くと、別の環境が適用されます。
現在の環境にモジュールをインストールする
pip install
# 現在のPython環境にモジュールをインストール
pip install numpy
# バージョンを指定してインストール
pip install numpy==1.26.0
# アップグレード
pip install --upgrade numpy
pip install と py -m pip install の違い
pip install と py -m pip install は、どちらもモジュールをインストールするコマンドですが、どのPython環境にインストールされるか が異なる場合があります。
# ① pip install(PATHに依存)
pip install numpy
# ② py -m pip install(pyランチャーのデフォルトバージョン)
py -m pip install numpy
# ③ py -3.12 -m pip install(バージョンを明示)
py -3.12 -m pip install numpy
3つの違いを表にまとめます。
| コマンド | どのPythonで実行されるか | 安全性 |
|---|---|---|
pip install numpy |
PATHで最初に見つかるpipの環境 | PATHの設定次第で意図しない環境に入る可能性あり |
py -m pip install numpy |
pyランチャーのデフォルトバージョン(py --list で * が付いているもの) |
pip 単体よりは安全だが、デフォルトバージョンが変わると影響を受ける |
py -3.12 -m pip install numpy |
確実にPython 3.12の環境 | バージョンを明示するので最も安全 |
例えば、Python 3.12 と 3.11 の両方がインストールされている場合を考えてみましょう。
【① pip install の場合】
PATHの順序: C:\Python311\ → C:\Python312\ → ...
pip install numpy
→ PATHを上から探して C:\Python311\ の pip が見つかる
→ Python 3.11 にインストールされる(3.12 に入れたかったのに!)
【② py -m pip install の場合】
pyランチャーのデフォルト: Python 3.12(*が付いている)
py -m pip install numpy
→ デフォルトの Python 3.12 の pip が実行される
→ Python 3.12 にインストールされる
※ ただし、新しいバージョンをインストールするとデフォルトが変わることがある
【③ py -3.12 -m pip install の場合】
py -3.12 -m pip install numpy
→ Python 3.12 の pip が確実に実行される
→ Python 3.12 にインストールされる(常に意図通り!)
複数バージョンのPythonがインストールされている環境では、py -X.Y -m pip install のようにバージョンを明示するのが最も確実です。py -m pip install でも多くの場合は問題ありませんが、デフォルトバージョンが意図通りかを py --list で確認しておくと安心です。
仮想環境がアクティブな場合
仮想環境をアクティベートしている状態では、pip install でも仮想環境内にインストールされるので安全です。
# 仮想環境をアクティベート
.venv\Scripts\activate
# この状態なら pip install でOK(仮想環境内にインストールされる)
(.venv) > pip install numpy
| 状況 |
pip install のインストール先 |
|---|---|
| 仮想環境なし | PATHで最優先のPython環境(意図しない環境の可能性あり) |
| 仮想環境あり(アクティブ) | その仮想環境内(安全) |
モジュールのアンインストール
pip uninstall numpy
インストール済みモジュールの一覧
# 現在の環境にインストール済みのモジュール一覧
pip list
# 出力例:
# Package Version
# ---------- -------
# numpy 1.26.0
# pip 23.3.1
# setuptools 69.0.2
特定のモジュールの詳細情報を確認するには:
pip show numpy
出力例:
Name: numpy
Version: 1.26.0
Summary: Fundamental package for array computing in Python
Home-page: https://numpy.org
Location: c:\python312\lib\site-packages
Location を見ると、どの環境にインストールされているか が分かります。
仮想環境とは
仮想環境の概念
仮想環境とは、プロジェクトごとに独立したPython環境を作る仕組みです。
システムにインストールされたPython(例:Python 3.12)をベースに、プロジェクト専用のモジュール管理空間を作成します。
仮想環境がないとどうなるか
仮想環境を使わない場合、すべてのプロジェクトが 同じシステムPython環境を共有 します。
【仮想環境なし】
システム Python 3.12
└── site-packages/
├── numpy 1.26.0 ← プロジェクトAが必要
├── numpy 2.0.0 ← プロジェクトBが必要(競合!)
├── pandas 2.1.0
└── ...
- プロジェクトAでは
numpy 1.26.0が必要 - プロジェクトBでは
numpy 2.0.0が必要
→ 同じ環境には 一つのバージョンしかインストールできない ため、どちらかが壊れます。
仮想環境を使うとどうなるか
【仮想環境あり】
プロジェクトA/
└── .venv/
└── site-packages/
├── numpy 1.26.0 ← プロジェクトA専用
└── pandas 2.1.0
プロジェクトB/
└── .venv/
└── site-packages/
├── numpy 2.0.0 ← プロジェクトB専用
└── requests 2.31.0
プロジェクトごとに独立しているため、バージョンの競合が起きません。
仮想環境のメリットまとめ
| メリット | 説明 |
|---|---|
| モジュールの競合を防止 | プロジェクトごとに異なるバージョンを使える |
| 環境の再現性 |
requirements.txt で同じ環境を再構築できる |
| システム環境を汚さない | 不要になったら仮想環境フォルダを削除するだけ |
| チーム開発に便利 | メンバー全員が同じモジュール構成で開発できる |
仮想環境の作成
Pythonには標準で venv モジュールが付属しており、追加インストールなしで使えます。
# プロジェクトフォルダに移動
cd C:\Projects\myproject
# 仮想環境を作成(.venv という名前が慣例)
python -m venv .venv
# バージョンを指定して作成する場合
py -3.11 -m venv .venv
実行すると、プロジェクトフォルダ内に .venv フォルダが作成されます。
myproject/
├── .venv/ ← 仮想環境(自動生成される)
│ ├── Include/
│ ├── Lib/
│ │ └── site-packages/ ← モジュールはここに入る
│ ├── Scripts/
│ │ ├── activate ← 有効化スクリプト
│ │ ├── pip.exe
│ │ └── python.exe ← 仮想環境用のPython
│ └── pyvenv.cfg
├── main.py
└── ...
仮想環境のフォルダ名は .venv が一般的です。ドット始まりのため隠しフォルダとなり、プロジェクトのソースコードと区別しやすくなります。
仮想環境の有効化・無効化
有効化(アクティベート)
仮想環境を作成しただけでは、まだ使える状態になっていません。有効化(アクティベート) する必要があります。
# コマンドプロンプトの場合
.venv\Scripts\activate
# PowerShellの場合
.venv\Scripts\Activate.ps1
# Git Bashの場合
source .venv/Scripts/activate
アクティベートすると、プロンプトの先頭に (.venv) が表示されます。
C:\Projects\myproject> .venv\Scripts\activate
(.venv) C:\Projects\myproject>
この (.venv) が表示されている間は、仮想環境が有効な状態です。
-
python→ 仮想環境内の python.exe が実行される -
pip install→ 仮想環境内にモジュールがインストールされる
# 確認:仮想環境のPythonが使われていることが分かる
(.venv) > python -c "import sys; print(sys.executable)"
C:\Projects\myproject\.venv\Scripts\python.exe
無効化(ディアクティベート)
仮想環境から抜けるには deactivate コマンドを実行します。
(.venv) C:\Projects\myproject> deactivate
C:\Projects\myproject>
プロンプトから (.venv) が消え、システムのPython環境に戻ります。
コマンドプロンプトやPowerShellのウィンドウを閉じた場合も、仮想環境は自動的に無効化されます。次回作業するときは、再度アクティベートが必要です。
仮想環境の削除
仮想環境はただのフォルダなので、フォルダを削除するだけです。特別なアンインストール手順は不要です。
# コマンドプロンプト
rmdir /s /q .venv
# PowerShell
Remove-Item -Recurse -Force .venv
削除しても、ベースとなったPython本体(例:Python 3.12)には影響しません。仮想環境内にインストールしたモジュールだけが消えます。
再度必要になったら、同じコマンドで新しい仮想環境を作り直せます。
# 削除後、もう一度作り直すこともできる
py -3.12 -m venv .venv
削除する前に、仮想環境が無効化(deactivate)されていることを確認してください。有効化されたまま削除すると、そのターミナルで python や pip コマンドがエラーになることがあります。
VS Codeで仮想環境を使う
VS Codeはプロジェクトフォルダ内の .venv を自動的に検出します。
- プロジェクトフォルダで
.venvを作成 - VS Codeでそのフォルダを開く
- 右下のPythonバージョン表示をクリック
-
.venvの環境が候補に表示されるので選択
VS Codeのターミナルを開くと、自動的に仮想環境がアクティベートされます。
requirements.txt ― モジュール構成の管理
requirements.txt とは
requirements.txt は、プロジェクトで使用するモジュールとそのバージョンを記録したテキストファイルです。
numpy==1.26.0
pandas==2.1.0
matplotlib==3.8.0
現在の環境からrequirements.txtを作成
pip freeze > requirements.txt
pip freeze は、現在の環境にインストールされているモジュールをバージョン付きで一覧出力します。
requirements.txtからモジュールを一括インストール
pip install -r requirements.txt
活用シーン
【チーム開発での流れ】
開発者A 開発者B
───────── ─────────
1. 仮想環境を作成
2. モジュールをインストール
3. pip freeze > requirements.txt
4. requirements.txt をGitにコミット → 5. リポジトリをクローン
6. 仮想環境を作成
7. pip install -r requirements.txt
→ 同じ環境が再現される!
.venv フォルダ自体はGitにコミットしません。.gitignore に .venv/ を追加し、requirements.txt だけを共有するのが一般的です。
実践:プロジェクトの始め方
ここまでの内容を踏まえて、新しいプロジェクトを始めるときの推奨手順をまとめます。
# 1. プロジェクトフォルダを作成
mkdir C:\Projects\myproject
cd C:\Projects\myproject
# 2. 使いたいPythonバージョンで仮想環境を作成
py -3.12 -m venv .venv
# 3. 仮想環境を有効化
.venv\Scripts\activate
# 4. 必要なモジュールをインストール
pip install numpy pandas matplotlib
# 5. requirements.txt を作成(他の人や将来の自分のために)
pip freeze > requirements.txt
# 6. 開発する
python main.py
# 7. 作業が終わったら無効化
deactivate
よくあるトラブルと対処法
「pip install したのにモジュールが見つからない」
原因: pip install した環境と、スクリプトを実行している環境が異なる。
対処法:
# どの python を使っているか確認
python -c "import sys; print(sys.executable)"
# どの pip を使っているか確認
pip --version
両方が同じ環境を指しているか確認してください。
「PowerShellで activate できない」
原因: PowerShellの実行ポリシーがスクリプト実行を制限している。
対処法:
# 現在のユーザーに対して実行ポリシーを変更
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
「VS Codeのターミナルで仮想環境が自動アクティベートされない」
対処法: VS Codeの設定で以下を確認:
-
Ctrl + ,で設定を開く -
python.terminal.activateEnvironmentを検索 - チェックが入っていることを確認
コマンド早見表
| やりたいこと | コマンド |
|---|---|
| Pythonバージョン確認 | python --version |
| 使用中のPython実行ファイルのパス | python -c "import sys; print(sys.executable)" |
| インストール済みバージョン一覧 | py --list |
| バージョン指定でPython実行 | py -3.12 script.py |
| バージョン指定でpip実行 | py -3.12 -m pip install numpy |
| モジュールインストール | pip install numpy |
| モジュールアンインストール | pip uninstall numpy |
| インストール済みモジュール一覧 | pip list |
| モジュール詳細情報 | pip show numpy |
| 仮想環境作成 | python -m venv .venv |
| 仮想環境有効化(cmd) | .venv\Scripts\activate |
| 仮想環境有効化(PowerShell) | .venv\Scripts\Activate.ps1 |
| 仮想環境無効化 | deactivate |
| 仮想環境削除 | rmdir /s /q .venv |
| requirements.txt 作成 | pip freeze > requirements.txt |
| requirements.txt から一括インストール | pip install -r requirements.txt |
まとめ
Pythonの環境管理は、最初は複雑に感じますが、以下の3つのポイントを押さえれば怖くありません。
-
pyランチャー(
pyコマンド) でバージョンを明示的に指定する -
仮想環境(
venv) でプロジェクトごとにモジュールを分離する -
requirements.txtでモジュール構成を記録・共有する
この3つを習慣にすれば、「どの環境にインストールしたっけ?」「なぜかモジュールが見つからない!」といったトラブルを防げます。




