venv について
何をするもの?
- 何をするものか
- Python の実行環境を保持しておいて、切り替えるためのもの
- 具体的には、以下の情報をフォルダに保存
- バージョン : venv を作成したときの python パスにエイリアスが保持される
- pip で入れたパッケージがフォルダ内に保持される
- 環境の切り替え
- フォルダ内にある
activateファイルで環境変数を load - 元の状態に戻るには
deactivateコマン ド (上記Loadで有効化されるコマンドのひとつ) を実行
- フォルダ内にある
- 典型的な使い方
- プロジェクト内に
.venv,venvのようなフォルダを作って配置 - →
.gitignoreにもあるし、それで合ってる気がする
- プロジェクト内に
後で見たとき用 簡易テンプレ (プロジェクト内に作る場合)
bash
python3 -m venv .venv # 作成
. .venv/bin/activate # アクティベート
activate 呼ぶタイミング
- pip installl する際
- プロジェクト内で python を呼ぶシェルス クリプト内
bash
pip freeze > requirements.txt # インストールしたパッケージを requirements.txt に書き出す
pip install -r requirements.txt # requirements.txt を使ってパッケージをインストール
venv を作成
コマンド
python3 -m venv <環境名>
特定のディレクトリに作成するなら
bash
mkdir ~/python-venvs # 環境を ここの下に作るとする (またはプロジェクトのフォルダ)
cd ~/python-venvs
which python3 # /opt/homebrew/bin/python3 だとする
python3 -V # 3.13.3 だったとする
python3 -m venv brew-3.13.3
→ カレントディレクトリ下に brew-3.13.3 というフォルダで環境が作られる
→ その中の bin/python は brew 版の python にリンクされる
実行した python バージョンに紐づく環境が作られるので、
標準インストール版の Python で venv 作成したい場合は、こう。
bash
/usr/bin/python3 -m venv system-3.9.3
自分的命名ルール
分からなくなるので、当面はこのルールにしてみる。
プロジェクト内の場合
.venvという名前で作る
共通のディ レクトリの場合
- ~/python-venvs/[どこのパッケージ管理のpythonか]-[pythonバージョン]-[識別名(あれば)]
例:
- system-3.9.3
- brew-3.13.3
- pyenv-3.11.9-conf-1
- pyenv-3.11.9-conf-2
アクティベートする (切り替える=スクリプト読み込む)
切り替え前
bash
which python3 # /opt/homebrew/bin/python3 だとする
python3 -V # 3.13.3 だったとする
切 り替え(アクティベート)
. ~/python-venvs/system-3.9.3/bin/activate
↑
実行ではなく、読み込みなので注意
→ 切り替わったことを確認
bash
which python3 # ~/python-venvs/system-3.9.3/bin/python3 になった
python3 -V # 3.9.3 になった
→ 以降、pip でライブラリをインストールしたら venv 以下に保持される