pyenv/pyenv-virtualenv/Anacondaを使ってクリーンなpython環境をセットアップ@Mac/Linux

2017/09/19 condaの使い方に関して追記
2017/07/27 Linuxに関して追記

python環境を構築し直したい

 pythonの環境、色々ライブラリ入れたり、python2.x系とpython3.x系の関係もよくわからなくなってごちゃごちゃしてきました。pyenvを使えば環境共存が楽になると聞いてはいたのですが、既にごちゃごちゃなので今更という感じもあってなかなか手をつけれていませんでした。

 しかし、ついに重い腰を上げてpythonの環境を1から構築し直してみました。結果は大満足、今までのごちゃごちゃ環境とは別にクリーンなpython環境を構築することができました。python環境を整理したい人は、やった方がよいと思います。いつ始めても全然OKです!本記事では、Mac/Linux(Ubuntu14.04 or 16.04)を対象に解説いたします。

 今回も宇宙語が続くので、気になる方のみ続きをご覧ください。

python環境関係のパッケージインストール

 pythonのインストール。python2.x系と3.x系の環境共存のためにpyenv、数値計算系のライブラリをまとめてセットアップするためにAnacondaを入れるのが最近のトレンドみたいです。pythonの環境共存には、さらに同じバージョンでの環境共存可能にするためのvirtualenvというものもあるのですが、これには単体のvirtualenvに加えてpyenv-virtualenvというものもありさらにややこしい。virtualenvとpyenv-virtualenvの違いはpyenvとvirtualenvとpyenv-virtualenvが解りやすいです。

 今回は、pyenv、virtualenv、pyenv-virtualenv、Anacondaを全てインストールして仮想環境構築して切り替えられるようにします。具体的な流れは以下になります。1つ1つ実施していきます。全部がつらければ、python(Anaconda)インストール(pyenv経由)あたりまでやるだけでも十分便利(なはず)です。

  • .bashrc準備
  • pyenvインストール
  • python(Anaconda)インストール(pyenv経由)
  • pyenv-virtualenvインストール
  • condaでpyenv-virtualenvの仮想環境作成
  • virtualenvインストール

.bashrc準備

 事前に.bashrcを準備しておきましょう。Linuxの場合は最初からあるので、何もしなくてOKです。Macに関しては以下記事参照ください。.bashrcの中身はこの時点では空でよいですし、好きな設定を書いておいてもよいです。

 また、MacでHomebrewがインストールされていなければ、インストールしておきましょう。以下コマンドをターミナルにコピペして実行すればOKです。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 Macports使っている人はこれを機にHomebrewに乗り換えましょう。以下記事参照ください。

pyenvインストール

 Macの場合は以下でpyenvをインストールできます。

$ brew install pyenv

 Linuxの場合は、以下コマンドでインストールできます。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

 あとは、以下コマンド実行するとpyenvが使えるようになります。

$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

python(Anaconda)インストール(pyenv経由)

 ここはMac/Linuxで共通です。Anaconda2と3をインストールします。Anacondaというやつは、数値計算系のnumpy等のライブラリがプリインストールされているpythonパッケージで、何かと便利なのでこいつを入れてやります。インストールは結構時間かかります(ネット環境にもよりますが、それぞれ10分くらいかな)。

 まずは、インストールできるpython環境を以下のコマンドで確認します。

$ pyenv install -l

 python2系のanaconda2やpython3系のanaconda3があることがわかりますので、これらをpyenv上にインストールしていきます。バージョン(末尾の数字)に関しては、基本的にはインストール時点で一番新しいものにしておけば問題ないです。

 python2.x系インストール

$ pyenv install anaconda2-4.4.0

 python3.x系インストール

$ pyenv install anaconda3-4.4.0

 インストールした後、環境の切り替えは以下のように実施します。

 python2.x系に切り替え

$ pyenv global anaconda2-4.4.0

 python3.x系に切り替え

$ pyenv global anaconda3-4.4.0

 今どんなpython環境があるか調べるには、以下コマンドで確認できます。

$ pyenv versions

 表示例は以下です。

* system
  anaconda2-4.4.0
  anaconda3-4.4.0

 アスタリスク(*)がついているのが現在自分がいる環境です。pyenv globalで環境を切り替えられます。消したい環境は pyenv uninstallで消去できます。例えばanaconda2-4.4.0が不要になったという場合は、以下コマンドでアンインストールできます。

$ pyenv uninstall anaconda2-4.4.0

pyenv-virtualenvインストール

 pyenvをさらに便利にするためpyenv-virtualenvをインストールします。

 Macの場合は以下コマンドでインストールしましょう。

$ brew install pyenv-virtualenv

 Linuxの場合は、以下コマンドでインストールできます。

$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

 以下コマンド実行して、pyenv-virtualenvをセットアップします。

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc
$ source ~/.bashrc

 インストールや設定は、以下を参照に自分の好みに少しカスタムしています 。

GitHub pyenv-virtualenv

condaで仮想環境作成

 ここがややこしいのですが、pyenvでanacondaを入れた場合は、python-virtualenvのコマンドで仮想環境生成してもうまくいかなくて、anacondaのパッケージ管理のフレームワークであるcondaで仮想環境を生成するのがよいそうです。python-virtualenvともキチンと連携してくれます。ここらへんはあまりドキュメント見つけられなくて、正しいやり方じゃないのかもしれませんが、今のところこれでうまくいっている、というものになります。

 例として、PILとOpenCVライブラリをインストールした画像処理を行うpython環境を構築しましょう。

 まずはpython2.x系に切り替えるため以下実行します。

$ pyenv global anaconda2-4.4.0

 あとは、以下コマンドでtestという仮想環境を構築できます。

$ conda create -n test python

 ちなみに、この場合はanacondaでなく、ライブラリが入っていない真っさらなpythonが入ることに注意しましょう。anacondaを入れたいときは、以下のようにします。

$ conda create -n test anaconda

 ただ、anacondaを入れる場合は、ものすごい時間がかかるので注意しましょう。必要なライブラリが多くないなら、後で必要なライブラリだけpipで入れてやるほうがよいと思います。

 ここから、例として画像処理をするための仮想環境を生成します。以下コマンド実行下さい。image-processingというのが仮想環境名で、PILopencvがその環境にインストールしたいパッケージ名です。

$ conda create -n image-processing python PIL opencv

 以下コマンドで現在の仮想環境を確認します。

$ pyenv versions

 実行すると以下のように表示されて、image-processingという仮想環境が生成されているのがわかります。 

  system
* anaconda2-4.4.0
  anaconda2-4.4.0/envs/image-processing (set by /Users/karaage/.pyenv/version)
  anaconda3-4.4.0

 以下実行するとimage-processingという仮想環境に移行できます。

$ pyenv global anaconda2-4.4.0/envs/image-processing

 $ python実行して import PIL とか import cv2実行してエラーが出なければ無事環境は生成できています。逆に$ pyenv global anaconda-2.4.0 で元の環境に戻って同じことをしたらエラーが出るはずです。つまり仮想環境のみにライブラリがインストールされて、元の環境には汚されてないのがわかります。

 OpenCVやPILを試してみたい方は、以下記事を参考にしてみて下さい。

 あとは、hogehogeというライブラリを入れたい場合は、以下コマンドで探して

$ conda search hogehoge

 みつけたライブラリを以下でインストールしましょう

$ conda install hogehoge

 condaで見つからないライブラリは、 pipでインストールすればOKです。例えばhogehogeというパッケージをインストールしたければ以下のコマンドを実行してください。

$ pip install hogehoge

 まずはpython3.x系の場合は。以下コマンドでanaconda3を選択してから、anaconda2と同じ要領で仮想環境を構築していけばOKです。

$ pyenv global anaconda3-4.4.0

virtualenv

 pyenv-virtualenvじゃない方のvirtualenvも入れておきましょう。まずはsystemデフォルトのpython環境に切り替え。

$ pyenv global system

 以下実行すればインストール完了。

$ sudo pip install --upgrade virtualenv

 virtualenvに関してはここまでで完了とします。

まとめ

 pythonの環境を構築できました。これで、様々なpython環境を自由自在に構築して切り替えることができるようになりました。今後は、今まであまりうまくいっていなかったDeep Learning関係の環境をこれでガシガシ構築していこうかなとか思っています。

 2016/04/23追記:とりあえずひたすらディープラーニングのパッケージ入れてみました!

参考書籍

 今回pyenvを使ってみようと思ったきっかけの本です。ただ、本の内容多少古いところもあったので、そのままは採用せず、ネットで調べた最新の記事を参照しました。本の内容自体は良いなと思っています。

参考サイト

HomebrewのインストールからpyenvでPythonのAnaconda環境構築までメモ

Python 環境のインストール

pyenv GitHub

pyenvとvirtualenvとpyenv-virtualenv

Anacondaの使い方 その3(よく使うコマンド一覧) - Python (Windows) 備忘録

関連記事