pyenv+Minicondaからdirenvに乗り換える

背景

pyenvを使っていた理由

Minicondaを使っていた理由

  • NumPyやSciPyをバイナリ形式でダウンロードしたかったから
    • Wheel環境が整備されていなかった時代はプロジェクト用のvirtualenvを作って pip install scipy をする毎にNumPyやSciPyのコンパイルのために手が止まってしまっていた

乗り換えようと思った理由

  • Python 2.6を使わなければいけないことが最近ではほとんど無くなったから(homebrewでインストールできるpython2.7とpython3で十分)
  • Wheel環境が整備されてきたのでpipでもバイナリ形式でダウンロードできるから

乗り換え先として試してみたもの

pyenv + pyenv-virtualenv

  • pyenvは残したままでMinicondaだけ捨てる方法
  • pyenv local を使うことで,ディレクトリを移動したときにvirtualenv環境を自動的に変更できる
  • 試してみると,なぜかシェルの動きがもっさりしてしまった(Enterキーを連打してみると分かりやすい。原因不明)
  • プロンプトに出てくるvirtualenv名を消す方法が分からないVIRTUAL_ENV_DISABLE_PROMPT を定義すればいいだけだった…

direnv

  • pyenvもMinicondaも捨てる方法
  • プロンプトに出てくるvirtualenv名を消すためには,source bin/activate するときに VIRTUAL_ENV_DISABLE_PROMPT という環境変数に空文字以外の値を入れておけばよい
  • pip install したときに /usr/local/bin が汚染されるのが怖すぎるので,デフォルトでvirtualenvを有効にするために以下の設定を .zshrc に書いている
if [[ -d "$HOME/.virtualenvs/default" ]]; then
  VIRTUAL_ENV_DISABLE_PROMPT=true source $HOME/.virtualenvs/default/bin/activate
fi
  • ディレクトリ移動時のvirtualenv環境を自動的に変更するには,以下の設定を .envrc に書いておけばよい
source $HOME/.virtualenvs/rime-python2/bin/activate