Search on the blog

2016年2月13日土曜日

pyenvでPythonの環境構築

やりたいこと
  • いろいろなバージョンのPythonを使いたい
  • あるアプリはPython2系で、別のアプリはPython3系で開発したい
pyenvを使うと上記のやりたいことを実現できる。

インストール
Macの場合はhomebrewでインストールできる。
brew install pyenv

インストール後、~/.bash_profileに以下を追加する。
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

使ってみる
まずはシステムにインストールされているPythonの情報を確認。
$ python -V
Python 2.7.10
$ pip -V
pip 7.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

pyenvを使って別のバージョンのPythonを入れてみる。
pyenv installで指定したバージョンのPythonをインストールできる。
新しいバージョンのPythonを入れた時やバイナリを提供するパッケージをインストールしたときはpyenv rehashを実行。
$ pyenv version
system (set by /Users/kenjih/.pyenv/version)
$ pyenv install 3.5.1
$ pyenv rehash
$ pyenv shell 3.5.1
$ pyenv version
3.5.1 (set by PYENV_VERSION environment variable)

Python 3.5.1が入ったっぽい。
現在のPythonのバージョンを確認してみる。
$ python -V
Python 3.5.1
$ pip -V
pip 7.1.2 from /Users/kenjih/.pyenv/versions/3.5.1/lib/python3.5/site-packages (python 3.5)

Pythonのバージョンの設定方法
pyenvは、以下の3つの単位でバージョンを設定できる。

設定単位 設定コマンド 設定が記述される場所
シェルセッション pyenv shell x.x.x 環境変数 PYENV_VERSION
アプリケーション pyenv local x.x.x カレントディレクトリの.python-version
グローバル pyenv global x.x.x ~/.pyenv/version

pyenvは上の設定内容に従って以下のようにPythonのバージョンを決める。
  1. 環境変数PYENV_VERSIONが定義されていればそれを使う
  2. カレントディレクトリに.python-versionファイルがあればそれを使う
  3. カレントディレクトリに.python-versionファイルがあればそれを使う
  4. rootディレクトリまで親を辿っていって.python-versionファイルがあればそれを使う
  5. ~/.pyenv/versionファイルを使う
シンプルで分かりやすい。

アプリケーションごとの設定を試してみる
おそらく最もよく使うのはこの設定かなと思うので試してみた。

$ mkdir py2 && cd py2 && pyenv local 2.7.11 && cd ..
$ mkdir py3 && cd py3 && pyenv local 3.5.1 && cd ..
$ cd py2 && python -V && cd ..
Python 2.7.11
$ cd py3 && python -V && cd ..
Python 3.5.1

これは便利だ。

0 件のコメント:

コメントを投稿