「Pythonで特定のバージョンを指定して仮想環境(venv)を作りたいが、そもそもそのバージョンのPythonがPCに入っていなくてエラーになる」というケースを解決するための手順書です。
今回は例としてPython 3.8を導入しますが、他のバージョンでも手順は全く同じです。
1. Python公式からインストーラーをダウンロードする(すでに入っていればスキップ)
まずは、ターゲットとなるバージョンのPythonインストーラーを取得します。
- Python公式のダウンロードページ(Python Source Releases)にアクセスします。
- ページをスクロールし、「Looking for a specific release?」のリスト、または「View full list of downloads」から目的のバージョン(例: Python 3.8.x)を探します。比較的新しい環境で特に制約がない場合は、Python version Maintenance statusの状況を見つつステーブル版が良いでしょう。
- 目的のバージョンの「Download」をクリックします。
- 遷移先ページの一番下にある「Files」テーブルから、Windows用のインストーラーを選択してダウンロードします。
- 推奨:
Windows installer (64-bit) - 古いバージョンだとinstall.exeの配布がセキュリティの観点から行われていない場合が多いです。そのばあいは、tar.xz(圧縮ファイル)でdlしてビルドする必要があります
- 推奨:

python ダウンロードページ
躓きポイント:どれを選べばいいかわからない 近年のWindows(64bit OS)であれば、基本的には
Windows installer (64-bit)を選べば間違いありません。embeddable packageは他プログラムへの組み込み用なので、通常開発では使用しません。
過去バージョンを使いたいときは、上の画像の下側に並んでいます。ここにない(めったにないと思いますがもっと古い)バージョンを使いたい場合はgithubなどのリポジトリを探す必要があります。
2. Pythonのインストールと環境変数の設定(すでに入っていればスキップ)
2.1 インストーラがある場合

遷移後のページの下部にそれぞれのOSへのダウンロードファイルがあります。
上側ではなく、下側の表のほうに installer.exeがあります。
ダウンロードした install.exeを起動してインストールしてください。
躓きポイント:PATHの通し忘れ installerでインストールすると自動的にPATHに追加されますが、インストールマネージャーでインストールした場合は、 add command directory to your PATH now?の質問にy (yes)ではなくN(No)と入力した場合、コマンドプロンプト等から
pythonコマンドで呼び出せなくなります。この場合、手動で環境変数を設定する必要があります。よくわからなければ一度アンインストールしてやり直すと確実です。
2.2 インストーラがない場合 tar.xz(開発者向けの方法)

古いバージョンや特定のバージョンではinstallerが配布終了している場合があります。(例:python3.8.10はinstallerが配布されているが python3.8.20では配布されていないなどバージョンによります)
こstallerが配布終了している場合があります。(例:python3.8.10はinstallerが配布されているが python3.8.20では配布されていないなどバージョンによります)
このときは、マイナーバージョンを変えてみてインストーラがあるバージョンを探すのが一番楽です。
もし、どうしても特定のマイナーバージョンを入れたい場合は、まずtar.xzをダウンロード。Source releaseとして公開(ソースコードだけ)されているので、展開し、自身の環境でビルドしなおす必要があります。ビルドできたら、自身のわかりやすい場所( user/programs/Python3-X/などに配置し、 その中にあるpython3.x.exeへのパスをwindowsの設定から”環境変数への追加”を行う必要があります)
3. インストールの確認と複数バージョンの切り替え
正しくインストールされたか、コマンドプロンプト(またはPowerShell)を開いて確認します。
以下のようなコマンドを実行してください。バージョン部分(-3.8はインストールしたバージョンに合わせてください、3.12なら py -3.12 -Vになります)
py -3.8 -V※「Python 3.x.x」とバージョンが表示されれば成功です。
躓きポイント:
python -Vだと違うバージョンが出る PCに既に別のPython(例: 3.11など)が入っている場合、単にpythonと打つとそちらが優先して起動してしまいます。 Windowsでは、py -[バージョン](ランチャー機能)を使うことで、特定のバージョンを明示的に呼び出すことができます。
4. 特定バージョンを指定した venv の作成
ここからが本題です。先ほど入れたPython 3.8を指定して、プロジェクト専用の仮想環境を作ります。
- 仮想環境を作りたいプロジェクトのディレクトリ(フォルダ)に移動します。
cd path/to/your/project - バージョンを明示して
venvを作成するコマンドを実行します。
py -3.8 -m venv .venv - ディレクトリ内に
.venvフォルダが生成されていることを確認します。
【コマンドプロンプト/PowerShellの場合】
// Xは、インストールされたpythonバージョンに合わせてください。
py -3.X -m venv .venv【Vscodeの場合】
VScodeで仮想環境を使う場合は、pythonファイルを実行する環境を画面右下から選び、新規作成時は上側に入力ポップアップが出るので、
create Virtural Environment
→ venv (Quicを選ぶと最新版で作られるので、古いバージョンを選ぶときは venv Manages virtual environments created by ‘venv’ を選ぶ必要があります)
→ Custom
→ 作りたいバージョンを指定 (ここではインストールされたpythonバージョン一覧が出ます。もし無い場合は VScodeを再起動してください)

バージョン指定
5. 仮想環境の有効化(アクティベート)
作成した仮想環境を有効化して、その中で作業を行います。
【コマンドプロンプトの場合】
.venv\Scripts\activate【PowerShellの場合】
.venv\Scripts\Activate.ps1有効化されると、プロンプトの先頭に (.venv) と表示されます。この状態で python -V を実行すると、py -3.8 と指定しなくても、自動的にPython 3.8が動くようになります。
躓きポイント:PowerShellでエラーが出る場合 PowerShellで初めてアクティベートを試みる際、セキュリティポリシー(スクリプトの実行禁止)に引っかかりエラーになることがあります。その場合は、管理者権限のPowerShellで
Set-ExecutionPolicy RemoteSignedを実行し、スクリプトの実行を許可してください。
まとめ:次回以降の使い回し
今後、新しいプロジェクトで別のバージョン(例: Python 3.10)の仮想環境が必要になった場合は、「1. 公式から3.10を落として入れる」→「4. py -3.10 -m venv .venv を実行する」 だけで、いつでも綺麗な独立環境を作ることができます。