Python

pyenv, pyenv-virtualenv, Anaconda(Miniconda)なPython環境の構築

pyenv, pyenv-virtualenv, AnacondaなPython環境の構築

  • Pythonのバージョンは複数使い分けたい (2系, 3系)
  • 仮想環境を作りたい
  • でも、普段はあまり気にしない

という自分のための環境構築方法メモです。

主な使い方として、

  • 普段は ipython だったり jupyter notebook と叩けば、デフォルトのバージョンとライブラリ環境が立ち上がる。
  • プロジェクトのディレクトリに入れば、Pythonのバージョンやインストールしたライブラリが切り替わる。

といったことを想定しています。

前回の記事で、 anyenvのインストールが環境している前提となります。

pyenvのインストール

anyenv を利用することで、すぐに終わります。
( pyenv 単体のときはPATHをShell profileに書き込んでください。)

$ anyenv install pyenv

Shell 環境をリフレッシュします。

$ exec $SHELL -l

pyenv -vpyenv のバージョンが表示されていたらインストールできています。

$ pyenv -v
pyenv 1.1.3-5-g7dae197

pyenv-virtualenvのインストール

pyenv のプラグインである pyenv-virtualenv をインストールします。
これは、 pyenvとanacondaを共存させる時のactivate衝突問題の回避策3種類に記載されている通り、

pyenvとanacondaのactivate衝突問題

を回避するための作業となります。

pyenv-virtualenvの公式githubページ のインストール方法に従います。

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

Shell profileに以下を追記します。

eval "$(pyenv virtualenv-init -)"

追記後、Shell 環境をリフレッシュします。

$ exec $SHELL -l

これで、 pyenv-virtualenv のインストールは完了です。

Anacondaのインストール

pyenv を利用して、 Python のインストールを行います。
基本的に、筆者は Python3 を利用しますので、 Python3 環境の構築を行います。
また、 Anaconda を利用して、一括で様々なライブラリを一度にインストールすることにします。

インストール可能な環境のリストを確認します。

$ pyenv install -l
Available versions:
    2.1.3
    2.2.3
    ...
    anaconda3-4.3.1
    anaconda3-4.4.0
    ironpython-dev
    ...

2017年7月30日現在では、 anaconda3-4.4.0 が最新の Anaconda3 のようです。
インストールする環境を決定したら、以下のコマンドでインストールを行います。

$ pyenv install anaconda3-4.4.0
Downloading Anaconda3-4.4.0-MacOSX-x86_64.sh...
-> https://repo.continuum.io/archive/Anaconda3-4.4.0-MacOSX-x86_64.sh
Installing Anaconda3-4.4.0-MacOSX-x86_64...
Installed Anaconda3-4.4.0-MacOSX-x86_64 to /Users/(USER NAME)/.anyenv/envs/pyenv/versions/anaconda3-4.4.0

これで、 Anaconda3-4.4.0 環境のインストールは完了です。

pyenv global/local 環境の設定

pyenv を用いて Anaconda3-4.4.0 をインストールしただけでは、 バージョンは切り替わりません。

pyenv global/local を用いて、 Python のバージョンを切り替えます。

まずは、現在の Python のバージョンの確認。

$ python -V
Python 2.7.10

$ python3 -V
pyenv: python3: command not found

The 'python3' command exists in these Python versions:
    anaconda3-4.4.0

初めからインストールされていた Python 2.7.10 しか利用できていません。

現在利用できる Python の一覧を確認します。

$ pyenv versions
* system (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version)
  anaconda3-4.4.0

system (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version) と、
anaconda3-4.4.0 がインストールされていることが確認できます。

しかし anaconda3-4.4.0 は、利用できる状態になっていません。( * が現在使用している環境を表します。)

先程インストールしたanaconda3-4.4.0をデフォルトに設定してみます。

$ pyenv global anaconda3-4.4.0

これで、どこのディレクトリにおいても、anaconda3-4.4.0環境がデフォルトで適応されるようになりました。

Python 2系と3系のどちらも利用したい場合は、以下のように設定します。

$ pyenv global system anaconda3-4.4.0

これで、pythonコマンドとpython3コマンドによって2系と3系をどちらも使用できるようになりました。

$ pyenv version
* system (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version)
* anaconda3-4.4.0 (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version)

$ python -V
Python 2.7.10

$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

特定のディレクトリ以下でのみ、バージョンを切り替えたい場合pyenv localコマンドを利用します。

$ cd target_dir
$ pyenv local (VERSION NAME)

$ python -V
Python (VERSION)

仮想環境の作り方/使い方

次に、実際の開発を想定して仮想環境を作成してみます。

まずは、Anaconda3に付随するcondaコマンドを使用して仮想環境を作成します。

ここでは、Python3.5.2の環境を作成してみます。

$ conda create -n py3.5.2 python=3.5.2 anaconda

このコマンドにより、

  • 仮想環境の名前: py3.5.2
  • Pythonバージョン: 3.5.2
  • インストール済みライブラリ: Anaconda

という環境を作成することができます。
condaコマンドで作成した仮想環境を確認します。

$ conda info -e
# conda environments:
#
py3.5.2                  /Users/(USER NAME)/.anyenv/envs/pyenv/versions/anaconda3-4.4.0/envs/py3.5.2
root                  *  /Users/(USER NAME)/.anyenv/envs/pyenv/versions/anaconda3-4.4.0

pyenv versionsコマンドでも確認できます。

$ pyenv versions
* system (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version)
* anaconda3-4.4.0 (set by /Users/(USER NAME)/.anyenv/envs/pyenv/version)
  anaconda3-4.4.0/envs/py3.5.2

作成したanaconda3-4.4.0/envs/py3.5.2環境を適応してみます。

適応前:

$ python -V
Python 2.7.10
$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

適応後:

$ pyenv activate anaconda3-4.4.0/envs/py3.5.2
$ python -V
Python 3.5.2 :: Anaconda 4.3.1 (x86_64)
$ python -V
Python 3.5.2 :: Anaconda 4.3.1 (x86_64)

解除:

$ pyenv deactivate
$ python -V
Python 2.7.10
$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

また、特定のディレクトリ以下の場合のみ、環境を切り替えたい場合は、pyenv localを使用します。

適応前:

$ python -V
Python 2.7.10
$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

適応後:

$ pyenv local anaconda3-4.4.0/envs/py3.5.2
$ python -V
Python 3.5.2 :: Anaconda 4.3.1 (x86_64)
$ python -V
Python 3.5.2 :: Anaconda 4.3.1 (x86_64)

解除:

$ pyenv local --unset
$ python -V
Python 2.7.10
$ python3 -V
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

まとめ

  1. pyenv global/localでバージョン管理
  2. conda create -n (NAME) (PYTHON VERSION) (LIBRARY) で仮想環境の作成
  3. 仮想環境の適応
    1. pyenv activateで全体に仮想環境を適応
    2. pyenv local (VERSION NAME)で特定のディレクトリ以下に仮想環境を適応
  4. 仮想環境の解除
    1. pyenv deactivateで、pyenv activateの解除
    2. pyenv local --unsetで、pyenv local (VERSION NAME)の解除

Enjoy!