Edited at

Macでpyenv+virtualenv

More than 5 years have passed since last update.

Marvericksをクリーンインストールしたついでに、python環境を刷新してみた。

従来はvirtualenv+virtualenvwrapperくらいで間に合ってたくらい。

ディレクトリ単位でpython環境切り替え可能っていうからきっと便利。

そして既に先輩たちにより、いくつか同じ情報書かれてたけど、自分用ってことで割り切り。


環境


pyenv


インストール


pyenvだけ

$ brew install pyenv

なんとこれで終わり。


pyenvにプラグインとしてvirtualenvも使うなら

$ brew install pyenv-virtualenv

最初からこれするだけで、pyenvも一緒に入ってくれる。


設定

インストール時に注意点として下記を促してくれるので適宜。

To enable shims and autocompletion add to your profile:

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

To use Homebrew's directories rather than ~/.pyenv add to your profile:
export PYENV_ROOT=/usr/local/opt/pyenv


使い方


環境をつくる

$ pyenv install 2.7.6

指定バージョンのpythonがインストールされる。

もちろんpipも共に。

なお、インストール可能なバージョンの一覧を確認するには

$ pyenv install -l

インストール済みの環境一覧を確認するなら

$ pyenv versions


global: 環境を共通利用

これは個人的にはしてもしなくても、な気がする。しなかったらsystem側のpythonを見に行くだけ。

$ python --version;which python

Python 2.7.5
/usr/bin/python

$ pyenv global 2.7.6
$ exec $SHELL -l

$ python --version;which python
Python 2.7.6
/usr/local/opt/pyenv/shims/python


local: 任意ディレクトリで任意環境を適用する

バージョン3.3.3環境を導入。

$ pyenv install 3.3.3

任意ディレクトリに移動して環境指定する。

$ cd ~/Projects/sandbox/

$ pyenv local 3.3.3
$ pyenv version
3.3.3 (set by /Users/xxx/Projects/sandbox/.python-version)

指定ディレクトリ以外はglobalのほうをみてることを確認。

$ cd

$ pyenv version
2.7.6 (set by /usr/local/opt/pyenv/version)


virtualenv

pyenv install時に指定したバージョンごとの環境を元に、新たに環境を複製しくれるのがvirtualenv。

同じバージョンで違うパッケージ構成にしたい時とか便利。

$ pyenv virtualenv 2.7.6 sandbox276

ここでつくられた環境もpyenv versionsにのってくる。

pyenv local sandbox276とかすれば任意ディレクトリでの環境利用も同じく使える。


環境の削除

バージョンごと環境もvirtualenv環境一緒。

$ pyenv uninstall 3.3.3

$ pyenv uninstall sandbox276
$ pyenv versions
system
* 2.7.6 (set by /usr/local/opt/pyenv/version)

ただしlocal指定で、任意ディレクトリに環境つくった場合、.python-versionというファイルが出来上がってそこに環境名が書かれているけど、それは消えないのでご注意を。


感想

バージョンで縦にフレキシブル!

virtualenvで横にフレキシブル!

きっと便利!


参考