direnvでpythonのバージョンを固定しながらvenvを自動でactivateする
必要要件
Pythonのバージョンマネージャー
.envrcがあるディレクトリ以下にcdすると勝手に.envrcを実行してくれる
グローバルに~/.envrcを置いてuse asdfを記述することで~/.asdf/shims/を経由せずに直接インストールしたパスを指定できる
venvの自動activateにも使えるらしい
Python標準で入っている
python -m venv .venvで./.venv/内に仮想環境を作成できる
source ./.venv/bin/activateで仮想環境を有効化できる
direnvを使うとこの操作を自動化できる
VSCodeのPython拡張使ってると勝手にactivateしてくれたりする
他のIDEはわからないです
手順
venvを使用したいディレクトリにcdする
asdf local python x.y.zでディレクトリ以下のPythonのバージョンを固定する
グローバルでdirenv使ってるとこの時点ではバージョンが更新されない可能性があります
バージョンを識別する~/.asdf/shims/pythonを経由せず直接~/.asdf/installs/python/x.y.z/bin/pythonをPATHに追加しているため
direnv editで./.envrcがnanoかvimで開くので以下を記述する
code:.envrc
use asdf
vim ./.envrcなどで好きなエディタで開いてdirenv allowでも同じことができる
おそらくこのタイミングでPythonのバージョンが指定したやつになる
python -m venv .venvで./.venv/を作成する
再度direnv editで./.envrcを以下に編集する
code:.envrc
use asdf
source ./.venv/bin/activate
これでwhich pythonやwhich pipは./.venv/内にあってpython -Vはx.y.zに固定されているはず