これまで
これまでpythonのversion管理にpyenvを使ってきた. Macならbrewでpyenvを入れた後使用したいpythonのversionをinstallした.
pyenv install 3.9.7
project/directory毎にpythonのversionが違う場合は対象のversionをpyenvでinstallした後
pytnv local 3.8.0
などでversionが指定できた. 同様にNode.jsのversion管理はnodenv, javaならjenvなどを使ってきた.
これから
asdfはpyenv等個別にversion管理を行うのではなく複数の言語のversionをこれ一つで管理できる. 使用感もpyenvと似ている. 上のpyenvと同じことがやりたかったら
asdf install python 3.9.7
asdf local python 3.9.7
で良い. 現在のdirectoryでどのversionが動くかどうか知りたかったら
asdf current
で調べることができる.
asdfで追加したplugin一覧は
asdf plugin list
で確認できる.
どのversionがinstallされているかを確認するには
asdf list python
設定
pipでinstallしたcli実行可能package
asdfで適当なpythonを入れてcliで実行可能なpackage, 例えばvirtualenvやjupyterをpipでinstallしたとする. しかしvirtualenvやjupyterは実行できない. 手っ取り早く実行可能にするには次のやり方がある:
asdf reshim python
を叩く. ただしこれはinstallする度に毎回実行する必要がある.
asdf-direnv
install毎に上記を行うのは面倒なのでasdf-direnvを使う. zshなら
asdf plugin-add direnv
asdf direnv setup zsh
でinstallできる. versionを切り替えたいlocal directoryに.envrcを書く. directoryへ行き
asdf direnv local python 3.10.4
でdirenvが設定してくれる. localだけでなく$HOME以下にも.envrcを作ってコマンドを追記するのを忘れずに.
メモ
asdfをupdateした際に~/.asdf/shims/のリンクが古いバージョンを参照してしまう現象に出会った. .asdf/shimsを削除してasdf reshimを実行すると良い.