Diary over Finite Fields

515ひかるの日記と雑文

Pyenv と Anaconda 併用環境におけるfish shell

Python の開発環境構築と、fish shell を使用する際にハマリどころがあったのでメモをしておくことにする。

ちなみに今回はfish shellで使うことが主眼なのでWindows環境については考慮しない記事になっている。僕のブログではよくあることなので今更かもしれないが……

pyenv について

Python の Version 管理は(Windows非対応ではあるが) pyenv が一番ラクだし情報も多いと思う。

github.com

$HOME/.pyenv にインストールしたあと、 .bash_profile とか .zshenv とかに次のように書くのが通常のインストールである。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)

fish shellにおいては、文法が違うので次のように書く。

set -gx PYENV_ROOT "$HOME/.pyenv"
set -x PATH $PATH "$PYENV_ROOT/bin"
status --is-interactive; and . (pyenv init - | psub)

これで pyenv コマンドが使えるようになるはずだ。

Anaconda について

pyenv install -l | grep anaconda

などで調べればインストールできるanacondaのversionがわかるはずである。ここでは anaconda3-4.2.0を仮にインストールしたいとしよう。

pyenv install anaconda3-4.2.0
pyenv global anaconda3-4.2.0

Anacondaを使っているので conda create -n py35 などとして py35 という名前の仮想環境を作る。この仮想環境内で作業したいが、fish shellでは残念ながら activate ができない。

そこで、 $XDG_CONFIG/fish/functions(conda info --root)/etc/fish/conf.d/conda.fish へのシンボリックリンクを置く。

cd $XDG_CONFIG/fish/functions
ln -s (conda info --root)/etc/fish/conf.d/conda.fish

すると、 conda activateconda deactivate で仮想環境に出たり入ったりができるようになっているはずだ。

参考

github.com

github.com