asdfのメモ

pyenvからasdfへ移行を例に
memo
Author

Masaya Kameyama

Published

March 10, 2022

これまで

これまで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を実行すると良い.

Back to top