Help us understand the problem. What is going on with this article?

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で横にフレキシブル!
きっと便利!

参考

infiniteloop
「ソースコードでなんでも生み出す」なんでもない記号から、とんでもないモノを生み出す。日々技術を磨き続け、あらゆる難題に答えていく札幌のシステム会社です。
https://www.infiniteloop.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした