コピペするだけで仮想環境を試せる!
pythonの仮想環境に関する記事は多く取り上げられています。
しかしそもそもどこにフォルダ作るの?
どうやって切り替えられるの?
などの超前提の部分はあまり触れられておらず、とりあえず動かしてみたい方のハードルとなっています。
この記事を読めば 【前提知識一切なし】【コピペするだけ】で pythonの標準の venv を使って仮想環境を 作る・有効化する・切り替える ところまでをたどれます!
とにかく一度動かして、触りながら理解を深めていきましょう!
この記事のねらい(想定読者)
- Python は触っているが、
venvはまだ作ったことがない方 - 「いま動いているのはどの Python.exe か」が不安な方
- とにかくvenvを動かしてみたい方
この記事のゴール
ハンズオンを終えると、次が 自分の PC でできるようになります。
- venv を 作成できる
- いま開いている PowerShell 上で、仮想環境が 有効だと分かる
- 簡単な
python(バージョン確認や最小実行)が 通る - venv を 切り替えられる
- (任意)不要になった venv を 削除できる
venvとは
venv は、プロジェクトごとに Python の実行環境(とそこに入れるライブラリ)を分けるための、Python に標準で付いてくる仕組みです。
virtual environmentsの略で「ブイエンブ」や「ヴェンヴ」などと読みます。
仮想環境を導入することで、グローバルに入れたパッケージと混ざりにくくなり、「このフォルダの作業ではこの環境」を再現しやすくなります。
詳しい解説は後にして、まずはハンズオンを進めましょう。
前提
Windows(PowerShell / VS Code ターミナルでも可)と python コマンドで進めること
本記事は Windows 向けです。
コンソールは PowerShell を想定していますが、VS Code の統合ターミナルが PowerShell になっている場合も同じ手順で進められます。
特定の Python 3.x には固定せず、その PC の python で venv が使えるかを重視します。
Python の環境について(前提となるインストール)
PC に venv が使える Python が入っている必要があります。
未インストールの場合や python が認識されない場合は、Python 公式サイトなどから Windows 向けインストーラを入手してインストールしてください。
Activate.ps1 が 実行ポリシーに阻まれる場合の対処は、# つまづきと対策 にまとめます。
この記事のシナリオ
次の流れで手を動かします。
-
project_aに.venvという仮想環境を作り、有効化や実行まで試す -
project_bにvenv_bという仮想環境を別名で作成し、切り替えて実行できるまでを確認する -
pipとrequirements.txtを試す - 仮想環境の削除を試す
ルートフォルダは %USERPROFILE%\Documents\venv-hands-on とします。
作業場所のイメージは次のとおりです。
%USERPROFILE%\Documents\venv-hands-on\
project_a\
.venv\ ←仮想環境
project_b\
venv_b\ ←別名の仮想環境
またPythonのグローバル環境と今回作成する仮想環境の包含関係は以下のよなりますなります。

ハンズオン
Step1 準備
1-1. PowerShell を開く
スタートメニューから「PowerShell」や「Windows PowerShell」を開いてください。
VScode から PowerShell を開いても構いません。
いまの画面が PowerShell であることだけそろえれば十分です。
1-2. venv が使えるかの確認
まず python と venv が使える状態かを確かめます。
以降に出てくる 「想定される結果の例」は、環境差があるため 完全一致ではなく、見え方の目安として読んでください。
python --version
Python 3.11.x
python -m venv --help
usage: venv [-h] [--system-site-packages] ...
(ヘルプが表示されれば OK)
python --version でバージョンが表示され、python -m venv --help でヘルプが表示されれば、この記事の手順に進めます。
ここでエラーになる場合は、Python のインストールや PATH を先に直してください(# つまづきと対策)。
1-3. フォルダの作成
ルートの venv-hands-on フォルダは、エクスプローラーで手動作成します(誤って上書きしにくくするため)。
-
エクスプローラーで任意の場所を開きます(迷ったら本記事の例の通りドキュメント配下で進めてください)。
-
venv-hands-onという名前のフォルダを作成します。 -
作成したフォルダのアドレスバーから パスをコピーします。
-
PowerShell に戻り、コピーしたパスへ移動します(引用符で囲んだパスを貼り付けてください)。
PowerShellcd "C:\Users\<各自のUSER名>\Documents\venv-hands-on"実行結果PS C:\Users\<各自のUSER名>\Documents\venv-hands-on> -
その下に
project_aとproject_bを作ります。PowerShellmkdir project_a, project_b Get-ChildItem実行結果ディレクトリ: C:\...\venv-hands-on Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- yyyy/mm/dd hh:mm project_a d----- yyyy/mm/dd hh:mm project_b
project_a と project_b が見えれば準備完了です。
以降、特に断りがなければ project_a 側の作業から進めます。
Step2 仮想環境の作成、有効化と利用まで
2-1. 作成
まず project_a フォルダに移動します。
パスは必要に応じて変更してください。(なお $env:USERPROFILE は C:\Users\<各自のUSER名> に対応しています。)
cd $env:USERPROFILE\Documents\venv-hands-on\project_a
次に project_a に、標準 venv の環境フォルダ .venv を作ります。
成功すると、project_a の直下に .venv フォルダができています。
python -m venv .venv
以下のコマンドで確認できます。
Get-ChildItem -Force
ディレクトリ: ...\project_a
Mode LastWriteTime Length Name
---- ------------- ------ ----
d--h-- yyyy/mm/dd hh:mm .venv
2-2. 有効化
いま開いている PowerShell 上で .venv を使う状態に切り替えます。
まずproject_aフォルダにいることを確認したうえで以下を実行してください。
.\.venv\Scripts\Activate.ps1
(.venv) PS ...\project_a>
有効化の確認の目安は次のふたつです。
1つ目はプロンプトの先頭に、(.venv) のように 仮想環境名が付いていることで確認できます(表示されるかは環境や設定で多少異なる場合があります)。
2つ目は Get-Command python の結果で、Source が \project_a\.venv\Scripts\python.exe 側を指していることで確認できます。
Get-Command python | Format-List Name, Source
Name : python.exe
Source : ...\project_a\.venv\Scripts\python.exe
2-3. 実行
有効化した環境の python が期待どおり動くことを確認します。
非常にシンプルなprint文を実行します。
python -c "print('hello from venv')"
hello from venv
2-4. 非有効化
いったん仮想環境を抜けて、元に戻してみましょう。
有効化している状態で次を実行します。
deactivate
実行するとプロンプトの先頭にあった (.venv) はなくなります。

コマンドでも確認すると、Get-Command python の Source がシステム全体のPythonに戻っていることが確認できるはずです。
Get-Command python | Format-List Name, Source
Name : python.exe
Source : C:\...\Python311\python.exe
(例。実際のパスは環境により異なります)
Step3 別の仮想環境を作成して利用
別フォルダ・別名の venv に切り替える体験をします。
project_b というフォルダに移動し、 venv_b という名前の仮想環境を作成します。
フォルダの移動
cd $env:USERPROFILE\Documents\venv-hands-on\project_b
PS ...\project_b>
仮想環境を作成
(venv_b の部分は、任意の名前を指定できます。)
python -m venv venv_b
(エラーなく戻れば OK)
仮想環境を有効化
.\venv_b\Scripts\Activate.ps1
(venv_b) PS ...\project_b>
簡単なpythonスクリプトを実行(print文)
python -c "print('hello from project_b')"
(venv_b) PS ...\project_b> hello from project_b
仮想環境を非有効化
deactivate
PS ...\project_b>
これで別の仮想環境の一連の動作を試すことができました。
Step4 pip と requirements.txt を試す(オプション)
このステップは、project_a と project_b に別のライブラリを入れて、仮想環境ごとに 独立している(混ざらない)ことを体験します。(実行しなくても問題ないです。)
4-1. project_a:色付き出力を試す(colorama)
まず project_a に移動します。
cd $env:USERPROFILE\Documents\venv-hands-on\project_a
PS ...\project_a>
先に hello_color.py を作っておきます(まだ仮想環境は有効化しません)。
@'
from colorama import Fore, Style
print(Fore.GREEN + "colorama OK" + Style.RESET_ALL)
'@ | Set-Content -Encoding utf8 hello_color.py
(エラーなく戻れば OK)
次に .venv を有効化します。
.\.venv\Scripts\Activate.ps1
(.venv) PS ...\project_a>
project_a 側に colorama をインストールします。
python -m pip install colorama
Successfully installed colorama-x.y.z
最後に hello_color.py を実行します。
すると色が付いた状態で文字が出力されるはずです。
(coloramaというライブラリの機能)
python hello_color.py
colorama OK
(端末の設定により色が付かない場合があります)
仮想環境を非有効化します。
deactivate
PS ...\project_a>
4-2. project_b:テーブル出力を試す(tabulate、requirements.txt 経由)
次に project_b で、別のライブラリ(tabulate)をrequirements.txt経由でインストールする方法を試します。
cd $env:USERPROFILE\Documents\venv-hands-on\project_b
PS ...\project_b>
先に requirements.txt と hello_table.py を作っておきます(まだ仮想環境は有効化しません)。
@'
tabulate>=0.9.0
'@ | Set-Content -Encoding utf8 requirements.txt
(エラーなく戻れば OK)
@'
from tabulate import tabulate
data = [["project_b", "venv_b", "tabulate"]]
print(tabulate(data, headers=["project", "venv", "package"]))
'@ | Set-Content -Encoding utf8 hello_table.py
(エラーなく戻れば OK)
venv_b を有効化します。
.\venv_b\Scripts\Activate.ps1
(venv_b) PS ...\project_b>
requirements.txt から必要なライブラリをインストールします。
python -m pip install -r requirements.txt
Successfully installed tabulate-x.y.z
pythonスクリプトを実行します。tabulateライブラリを使った実行結果が表示されるはずです。
python hello_table.py
project venv package
--------- ----- --------
project_b venv_b tabulate
4-3. 分離確認(project_b で colorama が入っていないこと)
venv_b を有効化したまま、project_a で入れた colorama が 入っていないことを確認します。
python -m pip show colorama
WARNING: Package(s) not found: colorama
つまり、project_a にインストールしたライブラリは、project_b の仮想環境には入っていません。venv を分けると、プロジェクトごとに依存ライブラリを独立して管理できます。
一通り確認できたので、仮想環境を再度 非有効化しておきましょう。
deactivate
PS ...\project_b>
Step5 仮想環境を削除する
仮想環境を有効化したまま(プロンプトに (.venv) や (venv_b) が付いている状態)でフォルダを削除すると、シェルの PATH が壊れた参照を持ったままになり混乱することがあります。必ず deactivate してから削除してください。
このステップでは、仮想環境を フォルダごと削除します。
5-1: コマンドで削除する
project_bのvenv_b をコマンドで削除しましょう。
cd $env:USERPROFILE\Documents\venv-hands-on\project_b
Remove-Item -Recurse -Force .\venv_b
Get-ChildItem
PS ...\project_b> Get-ChildItem
`venv_b` は無く、`hello_table.py` と `requirements.txt` だけ残っていれば OK
5-2: 手動で削除する
エクスプローラーでフォルダごと手動で削除しても同じことができます。
project_a の .venv フォルダごと削除してください。
削除後に困ったら、もう一度 python -m venv <任意の仮想環境名> で作り直せます。
つまづきと対策
1. PowerShell と Activate.ps1 /実行ポリシー
.\.venv\Scripts\Activate.ps1 が 実行ポリシーで止まることがあります。
次のいずれかを選んでください。
案 A(推奨): 一回きりの -ExecutionPolicy Bypass で、新しい PowerShell を立ち上げます。
そのウィンドウ内だけで Activate.ps1 を実行すれば、元のセッションには影響しません。
powershell -ExecutionPolicy Bypass -NoExit
(新しい PowerShell ウィンドウが開く)
案 B: PowerShell の代わりに コマンドプロンプト(cmd) を開き、activate.bat を使います。
.\.venv\Scripts\activate.bat
案 C: VS Code の統合ターミナルで、プロファイル設定により実行ポリシーが緩い構成になっている場合に、有効化を試します。
環境のポリシーを永続的に変える操作(例:Set-ExecutionPolicy)は、組織のセキュリティポリシーに反する可能性があります。
判断できない場合は、採用しないでください。
2. python が見つからない
Python が未インストール、PATH に python が無い、別名(py ランチャーだけ等)の可能性があります。
まずは公式インストーラで入れ直し、PATH 追加の有無を確認してください。
どの python が拾われているかは Get-Command python が手掛かりになります。
3. 作成・有効化が期待どおりにいかない
-
python -m venv .venvが失敗する: 権限やウイルス対策ソフト、パスの長さなどが原因のこともあります。別の場所に新規フォルダを作って再試行してください。 - 有効化できない:
project_aにいるか、.venv\Scripts\Activate.ps1のパスが正しいかを確認してください。 - 有効化したのに
pythonが想定と違う:Get-Command pythonを見て、どのpython.exeが選ばれているかを確認してください。
4. PATH と権限
Windows では、どのディレクトリに python.exe があるかと、PATH の先頭に近いほど優先されやすい、という整理ができます。
venv を有効化すると、そのセッションの探索順が変わり、.venv\Scripts\python.exe が先に選ばれやすくなります。
権限エラーが出る場合は、ユーザー書き込み可能な場所(今回の Documents 配下など)で試してください。
解説
1. なぜ venv を使うのか
プロジェクト A と Bで、必要なライブラリのバージョンが違うことはよくあります。
グローバルに全部入れると、更新のたびに別プロジェクトを壊しやすくなります。
また 再現性の観点では、「このフォルダを受け取った人が同じ手順で近い環境を作れる」ことが重要です。
venv は重い仕組みではなく、まず環境を分けるための標準的な出発点です。
壊れたら フォルダごと捨てて作り直すのも現実的です。
2. グローバル側の python.exe と venv 側の python.exe
Python をインストールすると、通常は python.exe がひとつ以上 PC に置かれます。
一方、venv を作ると、プロジェクト近くにも python.exe が現れます。
どちらが選ばれているかは Get-Command python が返す Source を見るのが安全です。
環境差が大きいので、本文では 特定の絶対パスを断定しません。
3. 有効化で何が起きるか(PATH の前後)
有効化を内部実装まで踏み込まずに捉えるなら、「この PowerShell セッションでは、python を探しに行く順番が変わり、venv 側が先に当たる」と理解すると迷いにくいです。
だからこそ、有効化の前後で Get-Command python の結果が変わります。
無効化(deactivate)は、その上書きを元に戻すイメージです。
有効化前の探索イメージ:
python を呼ぶ
└─ PATH を上から順に探す
├─ C:\...\Python311\python.exe ← 最初に見つかる(=これが動く)
└─ ...
有効化後の探索イメージ:
python を呼ぶ
└─ PATH を上から順に探す
├─ ...\venv-hands-on\project_a\.venv\Scripts\python.exe ← 先頭に挿し込まれる
└─ C:\...\Python311\python.exe
4. .venv という名前の慣例と先頭 . の意味
環境フォルダ名は原理的には自由ですが、ツールチェーンやチーム慣習の影響で .venv がよく使われます。
先頭の . は、一覧で目立ちにくくするなどの文化的な意味合いが強く、必須ではありません。
5. venv が用意している有効化スクリプト
venv が作る Scripts フォルダには、有効化のための複数の入口が置かれます。これを開くことでパスが切り替わるようになっているわけですね。
Windowsでは activate.bat(cmd 向け) と Activate.ps1(PowerShell 向け) が用意されています。
6. venv を削除するときの影響(公式的な考え方)
基本的には 仮想環境フォルダを削除するだけで問題ありません。
削除しても、レジストリや Python 本体の設定などに影響を与えるものではありません。
必要になったら、同じ手順で いつでも作り直せるのが venv の良さです。
7. venv 以外の仮想環境(Anacondaなど)について
仮想環境の作成には Conda(Anaconda等)系なども存在します。
本記事が扱う 標準 venv は、Python 本体に寄り添った 軽い仮想環境の切り口です。
「どちらが正しい」ではなく、いまの作業が標準 Python + pip で足りるなら venv で十分という整理ができます。
まとめ
コマンドの一覧を表にまとめました。
| 目的 | 主なコマンド(例) |
|---|---|
| 仮想環境 作成 |
python -m venv .venv ※任意の仮想環境名を設定可 |
| 仮想環境 有効化(PowerShell) | .\.venv\Scripts\Activate.ps1 |
| 仮想環境 非有効化 | deactivate |
| パッケージ追加 | python -m pip install <任意のパッケージ名> |
| 依存関係追加 | python -m pip install -r requirements.txt |
| 仮想環境フォルダの削除 | Remove-Item -Recurse -Force .venv |
venv は、プロジェクトごとにライブラリを分けられるので、PC 全体に入れた Python パッケージ同士のバージョンの食い違いや、別プロジェクトの依存関係が混ざること(いわゆる競合)を起こしにくくします。標準で付いてくる手軽さもあって、小さめの作業から試しやすい、というのがよく言われる利点です。
新しいプロジェクトのフォルダを作ったら、いきなり pip install する前に python -m venv で仮想環境を用意してから有効化する、という順番にしておくと、グローバル環境や他フォルダの venv と依存がぶつかりにくくなる、という進め方ができます。ぜひ自分の運用に合わせて調整してみてください。
参考
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
