pyenvとpyenv-virtualenvでanacondaと共存する

pyenvとpyenv-virtualenvでanacondaと共存する
目次

はじめに

今までローカル環境のpythonを切り替えるためにpyenvのみを利用してきました。 anacondaを使用する機会も増えてきたので、pyenv installからのpyenv localコマンドでanaconda環境が構築するのですが、 activateの部分をもう少しスマートに行いたいため、 pyenv-virtualenv も用いる方法に変更します。

今回やりたいこと

  1. 1台のマシンの中で使用するpythonのバージョンを切り替えたい
  2. さらに言えば、ディストリビューションも切り替えたい(anaconda)
  3. anacondapyenvactivate の競合を解決したい
    1. anacondaactivateする際にフルパスで指定するのを避けたい

1と2は pyenv で、3は pyenv-virtualenv で解決できることになります。

環境

  • MacOSX Yosemite
  • homebrew
  • zsh

セットアップ手順

仮想環境切り替え用のモジュールをインストール

# pyenvをインストールする
brew install pyenv
#pyenv-virtualenvをインストールする
brew install pyenv-virtualenv

シェル起動時の設定ファイルを修正

  • .zshrcに以下を追記する
# pyenvの設定
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH}
    eval "$(pyenv init -)"
fi
# pyenv-virtualenvの設定
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
  • ターミナルを再起動する(sourceコマンドでの再読込でも可)

Pythonの仮想環境を作成する

テスト用のディレクトリを作成

hoge ディレクトリ配下を任意のpythonバージョンで動作するようにしましょう。 pythonのバージョンを確認しておきます。

mkdir hoge
cd hoge
python -V
> Python 2.7.6

pythonのバージョンを設定

pyenvで使用可能なpythonを指定します。 今回は3.6.0をインストールした後、hoge ディレクトリ配下を3.6.0にします。

pyenv install 3.6.0
pyenv local 3.6.0
python -V
> Python 3.6.0

仮想環境の構築

pythonのvenvモジュールを呼び出し、仮想環境を構築します。 今回は便宜的にカレントディレクトリに仮想環境を展開します。 activateを読み込むことで、仮想環境に切り替わります。

python3 -m venv .
source bin/activate

deactivateする場合にはdeactivateコマンドを入力するだけです。

deactivate

Pythonの仮想環境を作成する(anacondaの場合)

テスト用のディレクトリを作成

同様にして、anaconda環境を構築するために、fugaディレクトリを作成します。 pythonのバージョンがデフォルトであることも確認しておきましょう。

mkdir fuga
cd fuga
python -V
Python 2.7.6

anacondaのバージョンを設定

こちらも手順としては同様です。 pyenvではインストールするpythonのディストリビューションが選択できます。 anaconda以外にもminicondapypyjython等でも構築が可能です。

pyenv install anaconda3-4.1.0
pyenv local anaconda3-4.1.0
python -V
> Python 3.5.1 :: Anaconda 4.1.0 (x86_64)

仮想環境の構築

condaコマンドを使用して、存在している環境情報を確認することができます。

conda info -e
> root                  *  /Users/XXXXXXXXX/.pyenv/versions/anaconda3-4.1.0

次に、anacondaの仮想環境を構築します。

conda create -n fuga python=3.5 anaconda

-n オプションは構築する仮想環境の名前、python=3.5は使用するpythonのバージョン、anacondaは仮想環境上で使用するモジュールになります。

pyenv activateコマンドを使用することで、anacondaの環境をactivateできます。

pyenv activate anaconda3-4.1.0/envs/fuga

deactivateも同様ですね。

pyenv deactivate

まとめ

  • pyenvpyenv-virtualenvを使用することで、pythonの仮想環境の切り替えができるようになりました。
  • venvで作成した環境とcondaで作成した仮想環境もpyenvを使用すれば競合することなくactivateすることができます。