Pythonのvenvとpipとは|仮想環境を初心者向けに解説
この記事でわかること
- Pythonでvenvを使って仮想環境を作る理由
- pipでパッケージを入れる場所と、仮想環境の関係
- .venvをGitで管理しない方がよい理由
- requirements.txtで環境を再現する基本
- WindowsとmacOS/Linuxでコマンドが少し違う理由
結論・重要ポイント
- venvは、プロジェクトごとにPythonとパッケージの置き場所を分ける標準機能です。
- pipは、Pythonパッケージをインストール・更新するための標準的なツールです。
- 仮想環境を有効化すると、pip installしたパッケージはその環境へ入ります。
- .venvフォルダそのものはGitへ入れず、必要なパッケージ名をrequirements.txtなどで残すのが基本です。
- 仮想環境はコピーして持ち運ぶより、必要になった場所で作り直す前提で考えると安全です。
対象読者と前提知識
この記事は、Pythonを学び始めて、pip install、venv、仮想環境という言葉で混乱している初学者向けです。
前提知識は、Pythonファイルを実行したことがある、またはこれから実行してみたい、という程度で問題ありません。この記事では、業務PCや会社PCの全体設定を変える話ではなく、学習用・小規模開発用のプロジェクトフォルダ内で環境を分ける考え方を扱います。
3人による授業形式の会話
生徒うみちゃん
Pythonでライブラリを入れるたびにvenvって出てくるんだけど、普通にpip installすればいいじゃん!何が違うってこと?
MAO先生
結論から言うと、pipはパッケージを入れる道具で、venvは入れ場所を分ける仕組みなのです。道具と作業部屋を分けて考えると分かりやすいですね。
生徒りくちゃん
つまり、プロジェクトAとプロジェクトBで必要なパッケージの種類やバージョンが違っても、混ざりにくくできるということですね!
MAO先生
よく気づきましたね!Python公式ドキュメントでも、仮想環境はプロジェクトに必要なライブラリを分けて持つためのものとして説明されています。
生徒うみちゃん
じゃあ、毎回プロジェクトの中に.venvを作って、そこに入れればいいってこと?それなら覚えやすいじゃん。
MAO先生
学習用や小さな開発では、その考え方で始めると整理しやすいです。ただし、.venvフォルダ自体はGitに入れず、作り直せるものとして扱うのが基本になります。
生徒りくちゃん
.venvをGitに入れない場合、別のPCで同じ環境を作るにはどうすればよいのでしょうか?
MAO先生
そこでrequirements.txtのような依存関係の一覧を使います。入れたパッケージ名とバージョンを記録しておけば、新しい仮想環境へ入れ直しやすくなります。
生徒うみちゃん
じゃあ、.venvを丸ごとコピーすればもっと早いじゃん!別のPCにそのまま持っていけば楽そう。
MAO先生
そこは早とちりです。仮想環境の中には、そのPC上のPython実行ファイルへのパスが含まれることがあります。コピーより、同じ手順で作り直す方がよいケースが多いのです。
生徒りくちゃん
WindowsとmacOSで有効化コマンドが違うのも、環境の中にある実行ファイルやスクリプトの場所が違うからなのですね。
MAO先生
その通りです。最初は、作る、有効化する、入れる、記録する、作り直す、の順番で覚えると十分です。仕組みを知っておくと、エラーが出たときにも落ち着いて確認できるようになります。
コード・操作手順・具体例
1. 仮想環境を作る
プロジェクトフォルダの中で、.venvという名前の仮想環境を作る例です。次のコマンドは学習用プロジェクト内で実行してください。
Windowsの例です。
py -m venv .venv
macOS/Linuxの例です。
python3 -m venv .venv
この操作により、プロジェクト内に**.venvフォルダが作られます。Python公式ドキュメントでは、仮想環境は.venvやvenv**という名前でプロジェクト内に置かれることが多いと説明されています。
2. 仮想環境を有効化する
作っただけでは、まだ現在の端末が仮想環境を使う状態とは限りません。有効化すると、端末のPATHに仮想環境用のPythonやpipが優先されるようになります。
Windows PowerShellの例です。
.venv\Scripts\Activate.ps1
macOS/Linuxの例です。
source .venv/bin/activate
Windowsでは実行ポリシーによりActivate.ps1が実行できないことがあります。会社PCや管理されたPCでは、無理に設定を変えず、管理者や担当者に確認してください。
3. pipでパッケージを入れる
仮想環境を有効化した状態で、例としてrequestsをインストールするコマンドです。このコマンドはインターネットからパッケージを取得します。業務PCでは通信先や利用ルールを確認してから実行してください。
python -m pip install requests
公式のPython Packaging User Guideでは、仮想環境を有効化している間、pipはその仮想環境へパッケージをインストールすると説明されています。
4. 入っているパッケージを記録する
別のPCや別の人が同じ環境を作れるようにするには、パッケージ一覧をrequirements.txtへ書き出します。
python -m pip freeze > requirements.txt
このコマンドは、現在の仮想環境に入っているパッケージとバージョンを一覧にします。.venvではなく、requirements.txtをGitで管理する考え方です。
5. 別の環境で再現する
新しい場所で仮想環境を作ったあと、requirements.txtからまとめてインストールする例です。
python -m pip install -r requirements.txt
古いプロジェクトではパッケージの組み合わせが合わないこともあります。失敗した場合は、Pythonのバージョン、エラーメッセージ、依存パッケージの指定を順番に確認します。
よくある誤解や失敗
誤解1. pipとvenvは同じもの
pipはパッケージを入れる道具です。venvは、プロジェクトごとにパッケージを分ける環境を作る仕組みです。役割が違います。
誤解2. venvを使えば何でも安全
仮想環境は、パッケージの混在を減らすための仕組みです。信頼できないパッケージを安全化する仕組みではありません。知らないパッケージを入れる前には、公式資料、配布元、ライセンス、業務ルールを確認します。
誤解3. .venvをGitへ入れる
.venvは作り直せるものとして扱います。プロジェクトコードや設定ファイルと一緒にGitへ入れると、容量が大きくなり、別のPCで壊れやすくなります。
誤解4. 仮想環境をコピーして配ればよい
Python公式ドキュメントでは、仮想環境は移動やコピーを前提にせず、必要なら再作成するものとして説明されています。依存関係の一覧から作り直す方が、原因を追いやすくなります。
Q&A
Q1. 仮想環境を毎回有効化しないといけませんか?
端末から短いコマンドで作業する場合は、有効化すると分かりやすいです。ただし、公式ドキュメントでは、仮想環境内のPythonをフルパスで指定すれば、有効化しなくても使えると説明されています。初学者は、まず有効化してから作業する流れで覚えるとよいです。
Q2. .venvという名前でないといけませんか?
必須ではありません。venvや別名でも作れます。ただし、プロジェクト内に**.venv**という名前で置く例は多く、エディタやチーム内の説明とも合わせやすいです。
Q3. requirements.txtだけで完全に同じ環境になりますか?
完全に同じとまでは言い切れません。Python本体のバージョン、OS、CPU、外部ライブラリの影響を受けることがあります。ただ、学習用や小規模な自動化では、環境を再現するための出発点として有効です。
Q4. pip installでエラーが出たら何を見ればよいですか?
まず仮想環境が有効化されているか、python -m pip —versionでpipの場所を確認します。次に、パッケージ名、Pythonのバージョン、ネットワーク制限、エラーメッセージを順番に見ます。
要点まとめ
- venvはプロジェクトごとにPython環境を分けるための標準機能です。
- pipはパッケージをインストール・更新するためのツールです。
- .venvはGitへ入れず、必要な依存関係をrequirements.txtなどへ記録します。
- 仮想環境はコピーより再作成を前提にすると、別PCや将来の自分が扱いやすくなります。
- 初学者は、作る、有効化する、入れる、記録する、再現する、の順番で覚えると迷いにくいです。
公式資料・参考資料
- Python公式ドキュメント: venv --- 仮想環境の作成
- Python Packaging User Guide: Install packages in a virtual environment using pip and venv
- Python Packaging User Guide: Tool recommendations
内容に合うCTA
Python学習で、venv、pip、requirements.txt、エディタ設定が混ざって分からなくなる場合は、最初に小さな手順表を作ると迷いにくくなります。MAO工房では、個別指導サービスやお問い合わせフォームから、Python学習や小さな業務自動化の環境づくりをご相談いただけます。
授業に登場する3人については、MAO先生のIT授業 キャラクター紹介で確認できます。
関連記事
Pythonのlistとtupleの違い|変更できる・できないを初心者向けに解説
Pythonのlistとtupleの違いを、要素の変更、1要素tupleの書き方、辞書のキー、実務での使い分けまでMAO先生の授業形式で解説します。
記事を読む →Cloudflare WorkersのNode.js互換性とは|2026年8月の既定化を初心者向けに解説
Cloudflare Workersで2026年8月4日以降のcompatibility_dateからNode.js互換性が既定で有効になる変更を、初心者向けに設定例、注意点、既存プロジェクトの確認手順まで解説します。
記事を読む →ExcelのIFERRORとIFNAの違い|エラー処理を初心者向けに解説
ExcelのIFERRORとIFNAの違いを、#N/A、#DIV/0!、#VALUE!などの扱い方、検索関数との組み合わせ、エラーを隠しすぎない注意点までMAO先生の授業形式で解説します。
記事を読む →GitHub Actionsの怪しいワークフロー保留とは|実行前承認を初心者向けに解説
GitHub Actionsが悪性の疑いがあるワークフロー実行を承認待ちにする公式更新について、何が止まり、誰が確認し、日々のCI運用で何を見ればよいかをMAO先生の授業形式で解説します。
記事を読む →MAO工房に相談できます
Python学習や開発環境づくりを相談できます
venv、pip、requirements.txt、エディタ設定、実務で使う小さな自動化まで、つまずきやすい環境づくりを一緒に整理します。
- ✓ Pythonとエディタの設定を確認
- ✓ 仮想環境とパッケージ管理を整理
- ✓ 学習用コードから実務自動化まで提案