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




