Python講座 / 仮想環境とpipでパッケージを管理する

仮想環境は、プロジェクトのPythonパッケージを別のプロジェクトやOS管理の環境から分ける仕組みです。pipはpython -m pipとして実行すると、どのインタープリターへインストールするかを明確にできます。

分離できる範囲を理解する

二つのプロジェクトが同じパッケージの異なる版を必要とすると、共通の環境の更新が別の作業を壊す場合があります。プロジェクトごとに.venvを用意すると、この衝突を避けやすくなります。ただし仮想環境はファイルアクセスやOSの権限を隔離する仕組みではなく、コードは現在のユーザーの権限で動きます。

道具・ファイル 役割
Python コードを実行する
venv 独立したプロジェクト環境を作る
pip 外部パッケージを導入・確認・削除する
requirements.txt 後で導入するパッケージと版を記録する

環境選択とパッケージの利用は、VS CodeでPythonコードを書いて実行するで扱う規則とつながります。

環境の作成と有効化を行う

既存の.venvを再作成する前に、その内容と使用目的を確認します。新規プロジェクトでは目的のPythonを指定して次を実行します。

python -m venv .venv

Windows PowerShellで有効化する例です。

.\.venv\Scripts\Activate.ps1

macOS・Ubuntuの場合です。

source .venv/bin/activate

PowerShellのポリシーで有効化が拒否された場合、端末全体の制限を緩める必要はありません。組織の方針に従い、.venv\Scripts\python.exeを直接呼び出す方法も使えます。有効化後も、実行パスを確認して判断してください。

必要なパッケージだけを導入して記録する

ここでは表データ処理のpandasを使います。名前と公式配布先を確認し、プロジェクトに必要なものだけを導入します。インストール名とimport名が異なるパッケージもあります。

python -m pip install pandas
python -m pip show pandas
python -m pip freeze > requirements.txt
python -m pip install -r requirements.txt

pip freezeは現在の導入済み環境を記録しますが、別のOSで完全に同じ環境を保証したり、ファイルのハッシュ検証を代替したりするものではありません。PowerShellの版によってリダイレクトの文字コードが違う場合があるため、requirements.txtの再導入で問題があれば文字コードも調べます。

再インストールより先に実行環境を確認する

環境のパスと依存関係を読み取ります。

python -c "import sys; print(sys.executable)"
python -m pip --version
python -m pip check

ModuleNotFoundErrorでは、実行中のPythonを特定してから、その環境へ導入します。管理者としてグローバル導入しても環境の食い違いは直りません。証明書やプロキシの問題はネットワークと信頼設定を確認し、TLS検証を無効にして済ませないでください。

終了時はdeactivateで抜けます。不要なパッケージの削除はpython -m pip uninstall package-nameです。.venvを消す前に、ソースと依存関係の記録が外側にあることを確かめます。実行環境の再作成と、プロジェクトのデータ削除を混同しないことが重要です。

有効化は現在のシェルが python を探す順序を変える機能です。有効化前はシステムのPython、有効化後はプロジェクトの .venv 内の実行ファイルが選ばれることを sys.executable で確認します。python -m pip --version も同じ環境を指す必要があります。有効化できない場合は仮想環境のPythonをフルパスで実行し、環境自体とシェル設定の問題を切り分けます。

python -c "import sys; print(sys.executable)"
python -m pip --version

関連する公式リファレンス