Python仮想環境 (venv) 入門: source venv/bin/activate を解説

Python

1. はじめに

プロジェクトごとに依存ライブラリのバージョンを分離したいときに欠かせないのが 仮想環境 (virtual environment) です。本記事では、その核心コマンド source venv/bin/activate を中心に、仕組みと実践手順をまとめます。


2. そもそも仮想環境とは?

  • システム Python を汚さず、プロジェクトごとに独立した Python 実行環境を用意できる仕組み。
  • ライブラリのバージョン衝突を防ぎ、再現性のある開発を実現。
  • 標準モジュール venv だけで完結(追加ツール不要)。

3. source venv/bin/activate を徹底分解

3.1 コマンド構成と各引数の意味

断片種類詳細
sourcebash 組み込み後ろに続くスクリプトを “新しいシェルを起動せずに” 現在のシェルで読み込んで実行する。別名 . (ドット) でも可。引数: <script> [args…]activate スクリプトは追加引数を使わない。
venv/bin/activateシェルスクリプトpython -m venv venv 実行時に自動生成。bash/zsh 用 (activate)、fish (activate.fish)、csh (activate.csh) など複数が同ディレクトリに配置される。

🔍 種類列の補足

  • bash 組み込み: cd, echo, source など Bash の内部実装コマンド。実行時に外部バイナリを探さず、呼び出し元シェルのプロセス内で直接動作するため 環境変数の変更が即座に反映 される。
  • シェルスクリプト: プレーンテキストで書かれた一連のコマンドを シェルが逐次解釈して実行 するファイル。venv/bin/activate 自体がこれで、source することでファイル内容が読み込まれ、PATH 変更などが行われる。

📌 ポイント: source によって PATH や PS1 を書き換える処理が“呼び出し元シェル”に反映される。** source によって PATH や PS1 を書き換える処理が“呼び出し元シェル”に反映される。

3.2 activate スクリプト内部で走るステップ

  1. 現在の環境をバックアップ
    • 例: export _OLD_VIRTUAL_PATH="$PATH" など。
  2. VIRTUAL_ENV を設定
    • 仮想環境のフルパス (/home/user/project/venv) を格納。
  3. PATH の先頭に $VIRTUAL_ENV/bin を追加
    • これにより python / pip が venv 版に切り替わる。
  4. プロンプト (PS1) に (venv) を付加
    • 元の PS1 は _OLD_VIRTUAL_PS1 に退避。
  5. PYTHONHOME が定義されていれば解除
    • システム Python との競合を防止。
  6. deactivate 関数を定義
    • 1〜4 の変更をロールバックするワンステップ復帰用。

実際のスクリプトは約 100 行。cat venv/bin/activate | less で読めます。

3.3 実行後に変化する環境変数

変数変更前変更後 (例)
PATH/usr/bin:…/home/user/project/venv/bin:/usr/bin:…
VIRTUAL_ENV(未定義)/home/user/project/venv
PS1user@host:~/project$(venv) user@host:~/project$

確認コマンド例:

3.4 逆操作 deactivate

deactivate を実行すると _OLD_VIRTUAL_PATH_OLD_VIRTUAL_PS1 が復元され、VIRTUAL_ENV が unset されるため、システム Python に戻る。

3.5 より深い TIPS

  • 他シェル対応: fish 用は venv/bin/activate.fish、csh 用は activate.csh
  • Windows: PowerShell では venv/Scripts/Activate.ps1 を dot ソース (. ./venv/Scripts/Activate.ps1) で実行。
  • フック: postactivate / predeactivate などを定義して自動処理も可能。
  • 代替ツール: pipx, conda, poetry env use も同じ“プロジェクトごとに Python を分離”する思想。

4. WP-CLI 操作例

実践ステップ


5. トラブルシューティング

症状原因と対処
source: command not foundzsh などでは source がエイリアス済み。. ドットでも可: . venv/bin/activate
(env) が消えない他シェルを開いていると有効化状態が残る。deactivate で戻す。
pip install なのにシステム側に入るvenv が正しく有効化されていない。which python で PATH を確認。

6. まとめ

  • source venv/bin/activate“今のシェルをプロジェクト専用 Python に切り替えるスイッチ”
  • PATH・PS1・環境変数を一括でセットし、ライブラリの管理を安全に行える。
  • コマンドフローを覚えておけば、どの環境でも素早く開発をスタート可能。

🗒️ 用語解説(初心者向けミニ辞典)

用語説明
システム PythonOS に最初から入っているグローバルな Python 実行ファイル。/usr/bin/python3 など。アンインストールや上書きは他ツールに影響するため注意が必要。
仮想環境 (virtual environment/venv)プロジェクトごとに独立した Python 実行ファイル・ライブラリを持つディレクトリ。システム Python を汚さずに依存関係を分離できる。
PATHコマンド検索パスを表す環境変数。: 区切りで複数パスを持ち、先頭にあるディレクトリほど優先される。
PS1Bash のプロンプト文字列を定義する環境変数。(venv) を付けるなど、現在の状態を視覚的に示す用途が多い。
VIRTUAL_ENV現在有効な仮想環境のディレクトリを指す環境変数。deactivate すると解除される。
PYTHONHOMEPython の標準ライブラリ検索パスを強制的に指定する変数。venv 有効化時は競合を防ぐため unset される。
bash 組み込み (builtin)cd, echo, source など Bash 内部で実装され、外部バイナリを呼ばずに動作するコマンド。環境変数の即時変更が可能。
シェルスクリプト.sh 拡張子などで書かれたテキストファイル。シェルが1行ずつ解釈して実行する一連のコマンド集。
dot source (.)source と同義の Bash 構文糖衣。スクリプトをカレントシェルに読み込む。
deactivatevenv が定義するシェル関数。PATH/PS1/VIRTUAL_ENV を元に戻し、仮想環境を終了する。
PowerShellWindows 標準の高機能シェル。venv 有効化は venv\Scripts\Activate.ps1 を実行する。
fish / cshBash とは異なる別系統シェル。venv にはそれぞれ専用の activate.fish, activate.csh が生成される。

💡 使い方: 上記表を読みながら本文のキーワードを追うと理解が深まります。


参考リンク

コメント

タイトルとURLをコピーしました