【Python】venvとpipで仮想環境を作る方法|パッケージ管理・requirements.txt

【Python】venvとpipで仮想環境を作る方法|パッケージ管理・requirements.txt Python

Pythonでパッケージ(ライブラリ)を使う開発では、仮想環境(venv)を作るのが基本です。仮想環境とは、プロジェクトごとに独立したPython環境のことで、インストールしたパッケージがほかのプロジェクトやシステム全体に影響しません。「プロジェクトAではこのライブラリのバージョン1、プロジェクトBではバージョン2」といった使い分けが、衝突なく行えます。

仮想環境は標準のvenvで作り、パッケージはpipで管理します。つまずきやすいのは、仮想環境を「有効化」せずにpip installしてしまい、システム全体(グローバル)に入れてしまうことと、有効化のコマンドがWindowsとMac/Linuxで違うことです。この記事では、実機のPythonで実際に仮想環境を作りながら、venvpipを整理します。

先に結論

  • 仮想環境はpython -m venv myenvで作ります(myenvはフォルダ名)。
  • 有効化:Windowsはmyenv\Scripts\activate、Mac/Linuxはsource myenv/bin/activate
  • パッケージはpip install パッケージ名で追加します。
  • 必ず有効化してからpip installします(忘れるとグローバルに入ります)。
  • pip freeze > requirements.txtで一覧を保存、pip install -r requirements.txtで再現します。
  • 仮想環境を抜けるにはdeactivateです。

関連して、Pythonの基本は関数(def)requirements.txtのようなファイルの扱いはファイルの読み書き、パスの操作はpathlibもあわせて参考になります。

スポンサーリンク

仮想環境(venv)とは(なぜ必要か)

パッケージをシステム全体(グローバル)にインストールすると、複数のプロジェクトでバージョンが衝突したり、システムのPythonを汚したりします。仮想環境は、プロジェクトごとに専用の隔離された場所を用意し、そこにパッケージをインストールします。これにより、プロジェクトAとBで違うバージョンのライブラリを使っても、互いに干渉しません。実機でも、仮想環境に入れたパッケージがその環境の中だけに隔離され、システムのPythonからは見えないことを確認しています。

venvを作る・有効化する

仮想環境はpython -m venv フォルダ名で作ります。myenv.venvという名前がよく使われます。作成後、有効化(activate)することで、その環境が使われるようになります。

作成と有効化(Windows)
# 仮想環境を作る(myenv というフォルダができる)
python -m venv myenv

# 有効化(PowerShell)
myenv\Scripts\Activate.ps1

# 有効化(コマンドプロンプト)
myenv\Scripts\activate.bat

# 有効化すると、プロンプトの先頭に (myenv) と表示される
作成と有効化(Mac / Linux)
# 仮想環境を作る
python3 -m venv myenv

# 有効化
source myenv/bin/activate

# 先頭に (myenv) が付けば有効化成功
有効化のコマンドはOSで違う

実機でpython -m venv myenvを実行すると、myenvフォルダの中にScripts(Windows)またはbin(Mac/Linux)が作られ、その中にactivatepipが入っていることを確認しました。有効化のコマンドはOSによって違います。Windowsはmyenv\Scripts\Activate.ps1(PowerShell)やmyenv\Scripts\activate.bat(コマンドプロンプト)、Mac/Linuxはsource myenv/bin/activateです。有効化に成功すると、プロンプトの先頭に(myenv)と表示されます。この表示が、今どの仮想環境にいるかの目印になります。なお、Windowsの PowerShell でActivate.ps1が実行ポリシーで止められる場合は、Set-ExecutionPolicy -Scope CurrentUser RemoteSignedを一度実行すると有効化できます。

pipでパッケージをインストール

仮想環境を有効化したら、pip install パッケージ名でパッケージをインストールします。インストール先は、その仮想環境の中だけです。

pip install でパッケージ追加
# パッケージをインストール(有効化した状態で)
pip install requests

# バージョンを指定してインストール
pip install requests==2.31.0

# 複数まとめて
pip install requests flask

# アップグレード
pip install --upgrade requests
有効化を忘れるとグローバルに入ってしまう

もっとも多い失敗が、仮想環境を有効化せずにpip installしてしまうことです。有効化していない状態でインストールすると、パッケージがシステム全体(グローバル)に入ってしまい、仮想環境で隔離する意味がなくなります。実機でも、仮想環境にインストールしたrequestsはその環境の中(myenvフォルダ内)に置かれ、システムのPythonからは見えないことを確認しました。pip installの前に、プロンプトの先頭に(myenv)が付いているかを必ず確認してください。付いていなければ、まだ有効化されていません。どこにインストールされたか分からなくなったら、pip -Vでpipの場所を確認できます。仮想環境のpipなら、パスにmyenvが含まれます。

pip list / freeze で確認

インストール済みのパッケージはpip listで一覧できます。pip freezeは、バージョン付きで「再インストール用の形式」で出力します。

インストール済みの確認
# インストール済みパッケージの一覧
pip list

# バージョン付き(requirements.txt 用の形式)
pip freeze
#  requests==2.34.2
#  certifi==2026.6.17
#  urllib3==2.7.0  ... のように出力される

実機でも、pip install requestsのあとにpip listすると、requestsだけでなく、それが依存するcertifiurllib3なども一緒にインストールされていることを確認できました。pip freezerequests==2.34.2のようにバージョンを固定した形式で出力します。これが次のrequirements.txtの元になります。

requirements.txtで環境を再現する

pip freezeの出力をrequirements.txtというファイルに保存しておくと、別の環境やチームメンバーが同じパッケージ構成を一発で再現できます。これがPythonのパッケージ管理の基本です。

requirements.txt の書き出しと復元
# 現在のパッケージ一覧をファイルに保存
pip freeze > requirements.txt

# 別の環境で、同じパッケージをまとめてインストール
pip install -r requirements.txt

# → requirements.txt に書かれた全パッケージが、
#    同じバージョンでインストールされる

実機でも、pip freeze > requirements.txtでファイルに書き出すと、インストール済みパッケージがバージョン付きで5行ほど保存されました。新しい環境では、仮想環境を作って有効化したあと、pip install -r requirements.txtを実行するだけで、まったく同じパッケージ構成を再現できます。requirements.txtテキストファイルなので、Gitで管理してチームで共有するのが一般的です。「自分の環境では動くのに、他の人の環境では動かない」というトラブルを防げます。

無効化・削除・.gitignore

仮想環境を抜けるにはdeactivateです。仮想環境のフォルダはそのまま削除でき、Gitには含めないのが基本です。

無効化と削除
# 仮想環境を抜ける(有効化を解除)
deactivate

# 仮想環境を削除(フォルダごと消すだけ)
# Windows:  rmdir /s myenv
# Mac/Linux: rm -rf myenv

# .gitignore に追加して、Git管理から除外する
# myenv/  (または .venv/)

deactivateで仮想環境を抜けると、プロンプトの(myenv)表示が消え、元のシステムのPythonに戻ります。仮想環境のフォルダは、削除したいときはフォルダごと消すだけです(中にすべてが入っているため)。重要なのは、仮想環境のフォルダをGitに含めないことです。サイズが大きく環境依存なので、.gitignoremyenv/.venv/を追加して除外します。代わりにrequirements.txtを共有すれば、各自が同じ環境を再現できます。

主なコマンドまとめ

venvpipの主なコマンドをまとめます。

操作 コマンド
作成 python -m venv myenv
有効化(Win) myenv\Scripts\activate
有効化(Mac/Linux) source myenv/bin/activate
インストール pip install パッケージ名
一覧の保存 pip freeze > requirements.txt
一覧から復元 pip install -r requirements.txt
無効化 deactivate

よくある失敗

有効化せずにpip installする

グローバルに入ってしまいます。先頭の(myenv)表示を確認してからインストールします。

有効化コマンドをOSで間違える

WindowsはScripts\activate、Mac/Linuxはsource bin/activateです。

仮想環境フォルダをGitに含める

サイズが大きく環境依存です。.gitignoreで除外し、requirements.txtを共有します。

requirements.txtを作らない

環境を再現できません。pip freeze > requirements.txtで保存しておきます。

PowerShellで有効化が止められる

実行ポリシーが原因です。Set-ExecutionPolicy -Scope CurrentUser RemoteSignedで解決します。

よくある質問

Q仮想環境(venv)はなぜ必要ですか?
Aプロジェクトごとに独立したPython環境を用意し、インストールしたパッケージが他のプロジェクトやシステム全体に影響しないようにするためです。プロジェクトごとに違うライブラリのバージョンを使っても衝突せず、環境を清潔に保てます。Pythonでパッケージを使う開発では基本の作法です。
Q仮想環境を有効化するコマンドは?
AWindowsの PowerShell はmyenv\Scripts\Activate.ps1、コマンドプロンプトはmyenv\Scripts\activate.bat、Mac/Linuxはsource myenv/bin/activateです。有効化に成功すると、プロンプトの先頭に(myenv)と表示されます。
Qpip installしたのに、別の場所に入ってしまいました。
A仮想環境を有効化せずにインストールした可能性が高いです。有効化していないと、パッケージがシステム全体(グローバル)に入ります。pip installの前に、プロンプトの先頭に(myenv)が付いているか確認してください。pip -Vでpipの場所も確認できます。
Qrequirements.txtは何のためにありますか?
Aインストールしたパッケージとそのバージョンを記録しておくファイルです。pip freeze > requirements.txtで保存し、別の環境でpip install -r requirements.txtを実行すると、同じパッケージ構成を再現できます。チームでの環境共有や、本番環境の構築に使います。
Q仮想環境のフォルダはGitに入れるべきですか?
A入れません。仮想環境のフォルダはサイズが大きく環境依存なので、.gitignoremyenv/.venv/を追加して除外します。代わりにrequirements.txtを共有すれば、各自が同じ環境を再現できます。

まとめ

  • 仮想環境はpython -m venv myenvで作り、有効化して使います。
  • 有効化はOSで違う(Win: Scripts\activate / Mac・Linux: source bin/activate)。
  • パッケージはpip install必ず有効化してから(myenv)表示を確認)。
  • pip freeze > requirements.txtで保存、pip install -r requirements.txtで再現。
  • 仮想環境フォルダはGitに含めない.gitignoreで除外)。

仮想環境とpipは、Pythonで外部ライブラリを使うときの土台です。「有効化してからpip install」「requirements.txtで環境を共有」という2点を押さえれば、パッケージの衝突に悩まされることなく、クリーンな開発環境を保てます。新しいプロジェクトを始めるときは、まず仮想環境を作る習慣をつけましょう。