pyenvとpyenv-virtualenvでanacondaと共存する
はじめに
今までローカル環境のpythonを切り替えるためにpyenvのみを利用してきました。
anacondaを使用する機会も増えてきたので、pyenv install
からのpyenv local
コマンドでanaconda環境が構築するのですが、
activate
の部分をもう少しスマートに行いたいため、 pyenv-virtualenv も用いる方法に変更します。
今回やりたいこと
- 1台のマシンの中で使用するpythonのバージョンを切り替えたい
- さらに言えば、ディストリビューションも切り替えたい(anaconda)
- anaconda と pyenv の
activate
の競合を解決したい- anaconda を
activate
する際にフルパスで指定するのを避けたい
- anaconda を
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
以外にもminiconda
やpypy
、jython
等でも構築が可能です。
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
まとめ
pyenv
とpyenv-virtualenv
を使用することで、pythonの仮想環境の切り替えができるようになりました。venv
で作成した環境とconda
で作成した仮想環境もpyenv
を使用すれば競合することなくactivate
することができます。