発電状況監視システムのような、何か簡単なWebシステムを作りたくなった時、Ruby on railsがあると楽に組めるだろうか?rubyも勉強してみようか?
なんて考え始めると、複数バージョンのインタプリタを管理できるrbenvを入れておきたくなる。同様に、pythonはpyenv、nodejsはndenvがある。名前が似ているだけでなく、使い方もほぼ同じ。
ということは、これらを一括管理する方法があるのでは?と思ってググったらありました。
anyenvです。
インストール方法
homeディレクトリ下にanyenvコードをcloneします。
$ git clone https://github.com/riywo/anyenv ~/.anyenv
環境設定
homeディレクトリ下の.bash_profileにanyenv環境設定して、shellを再起動する。
bash以外のshellを使う方は適宜読み替えてください。
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l
動作確認
以下のようにコマンドを実行すると、使用可能なenv系ツールをリストアップしてくれます。
…Go, Lua, Scalaにも同様のツールが存在することを、ここで初めて知りました。
$ anyenv install -l Available **envs: Renv crenv denv erlenv ... goenv luaenv ... ndenv ... pyenv rbenv ... scalaenv
anyenv環境下のpyenvにプラグイン追加
virtualenvプラグインも、以下のようにすれば導入できます。
$ git clone https://github.com/yyuu/pyenv-virtualenv ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv
トラブルシューティング
こんなに簡単な導入手順なのに、何故かハマりました。pyenv global 3.5
のようにコマンド実行しても、pythonバージョンが切り替わらないのです。
いろいろググってみると、どうも事前にpyenvを導入してuninstallした際、pyenvの設定ファイルが中途半端にhome下に残っていたのが原因であることが判明しました。1
pyenvのバージョン選択はまず、pyenv shellで設定されるPYENV_VERSION環境変数。
次に、pyenv localで設定できる、カレントディレクトリにある.python-versionファイル。
次に、pyenv global で設定できる~/.pyenv/versionファイル。
全てがなかったらsystemのpython。
まとめ(注意点)
既にpyenvインストール済みだった人は上記のファイルを全て削除しておきましょう。