LoginSignup
5
8

More than 5 years have passed since last update.

Mac High Sierra にpyenvを入れてPythonが切り替わるようにする

Posted at

Pythonでプログラムを書こうと思ったときにお世話になるpyenv
巷にはいろいろとインストール方法が溢れているが、High Sierra (だからかどうかわからないが)に導入しようとしたところ少し躓いたのでメモ。

まずはHomebrewでインストール

なんだかんだ便利なので、Homebrewを利用してサクッとインストール。

install
$ brew install pyenv

pyenvのパスを通す

pyenvコマンドを使えるようにする。
.bash_profile, .bashrc, .zshrcなんでもいいけど、使用しているシェルの設定ファイルに以下を記述。

export_pyenv
$ export PYENV_ROOT=$HOME/.pyenv
もしくは、
$ export PYENV_ROOT=/usr/local/var/pyenv

pyenvでインストールされる様々なバージョンのpythonが保存される場所です。まぁ、お好きな方で。
これでpyenvコマンドが認識されるようになります。

pyenv_cmd
$ pyenv -v
pyenv 1.2.7

いちおうやっとこうrehash

pyenvのhelpに書いてあるし、いちおうやっとく。

help
$ pyenv --help
Some useful pyenv commands are:
            ...
   rehash   Rehash pyenv shims (run this after installing executables)
rehash
$ pyenv rehash

好きなPythonバージョンをインストール

いよいよPythonのインストール。
はやる気持ちを抑えて、インストール可能なバージョンを確認してみる。

list
$ pyenv install --list
            ...
  3.6.6
  3.7.0
  3.7-dev
  3.8-dev
            ...

上記はごく一部です。
今回は3.7.0をインストールしてみる。

install_37
$ pyenv install 3.7.0

自前でビルドも行うため、少し待ちます。
以下でインストール済バージョンを確認。

versions
$ pyenv versions
* system
  2.7.15
  3.7.0 (set by /usr/local/var/pyenv/version)

上記の意味するところは、
- このPCにインストールされているのは、system(macに元から入ってるやつ),3.6.6,3.7.0
- (2.7.15は比較のために入れときました)
- 今はsystemが選択されてるよ

ちなみに、現在選択中のバージョンだけを表示するには、

version
$ pyenv version
system (set by /usr/local/var/pyenv/version)

利用するPythonバージョンを指定

2つの指定の仕方があります。

global

デフォルト指定。基本的にこのバージョンが使われる。

global
$ pyenv global 3.7.0

local

特定のディレクトリ内のみこのバージョンで!という時に使う。

local
$ pyenv local 2.7.15

このコマンドを実行したディレクトリでは2.7.15が利用される。

Pythonを動かしてみよう

わくわく。

python
$ python --version
Python 2.7.10

あれ?

local指定外のディレクトリでコマンドを実行したため、3.7.0でないとおかしい。
2.7.0ってなんや?そんなのインストールしてない!
実は、system2.7.0です。
いやでも、何にせよ3.7.0じゃないと。。

答えはshimsにあり

先にPYENV_ROOTで指定したインストール済Python置き場を見てみると、shimsというディレクトリがあります。
ここには、pyenv globalなどで切り替えたバージョンの各種python実行ファイルたちが用意されています。

$ $PYENV_ROOT/shims/python --version
Python 2.7.10

$ pyenv global 3.7.0
$ $PYENV_ROOT/shims/python --version
Python 3.7.0

$ pyenv global 2.7.15
$ $PYENV_ROOT/shims/python --version
Python 2.7.15

shimsをパスに通してあげる

ということで、shimsディレクトリのパスを通してあげることで、pythonがうまいこと動くようになりました。

.bash_profile
export PYTHON_PATH=$PYENV_ROOT/shims
export PATH=$PYTHON_PATH:$PATH
results
$ pyenv global system
$ python --version
Python 2.7.10

$ pyenv global 3.7.0
$ python --version
Python 3.7.0

$ pyenv global 2.7.15
$ python --version
Python 2.7.15
5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8