エンジニアのブログ

最近クラウドを触りはじめたエンジニアのブログ

Python3に変更できずにはまった話

状況

Homebrewでpythonの3系をインストールしたが、ターミナル上でpythonコマンドを実行してもなぜか2系が起動されてしまう。

$ python
Python 2.7.16 (default, Oct 16 2019, 00:34:56) 


実行パス、環境変数(PATH)、Python3のインストール先を確認したところ、次のとおりだった。

$ which python
/usr/bin/python

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$ ll /usr/local/bin/python*
lrwxr-xr-x  1 user  admin  34 12 21 18:32 /usr/local/bin/python3 -> ../Cellar/python/3.7.5/bin/python3


理由

最後のコマンドを実行してもしやと思い、別のコマンドを実行したところpython3が起動された。 そう単に"python3"としてコマンドが登録されていた(正確には"python3"として別名が登録されていた)

$ python3
Python 3.7.5 (default, Nov  1 2019, 02:16:32) 


pyenvのインストール

pythonコマンドで実行されるPythonのバージョンを簡単に切り替えできるようにしたいので、pyenvをインストールすることに。
(参考:pyenvにより、pythonのバージョンを変更する - Qiita

$ brew install pyenv
・・・
Installed Python-3.7.5 to /Users/xxxxx/.pyenv/versions/3.7.5

$ pyenv versions
* system (set by /Users/xxxxx/.pyenv/version)
  3.7.5

$ pyenv global 3.7.5
$ python --version
Python 2.7.16

$ eval "$(pyenv init -)"
$ python --version
Python 3.7.5

$ which python
/Users/xxxxx/.pyenv/shims/python


.bash_profileには下記を追加する。これを記載しておかないと、ターミナルを再度起動してpythonコマンドを実行した場合に2系が起動してしまう。

<<.bash_profile>>
# pyenv
eval "$(pyenv init -)"


また、上記の対応後、pipも使えるようになった。

$ pip -V
pip 19.3.1 from /Users/xxxxx/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pip (python 3.7)
$ pip --version