Edited at

fish shellでPython3を利用する@Mac


pyenvのインスール

複数バージョンのpythonを切り替えて利用できるようにするため、pyenvをインストールする。

brew install pyenv 

pyenv --version
=>pyenv 1.2.4


Python3のインストールと適用

pyenvで、利用したいバージョンのPythonをインストールする。

# インストール可能なPythonバージョンを確認する。

pyenv install -l

# Python3.6.0をインストール
pyenv install 3.6.0
=>Installed Python-3.6.0 to /Users/{user-name}/.pyenv/versions/3.6.0

# インストールしたPythonを利用するために設定反映する(特定のディレクトリのみに適用する場合は、globalをlocalに置き換える。
pyenv global 3.6.0

# Pythonのバージョンを確認する。
python --version
=> Python 2.7.10

Python 2.7.10?!:cold_sweat::cold_sweat::cold_sweat:


ビルドが失敗する場合

BUILD FAILED (OS X 10.x.x using python-build 2018XXXX) とエラー表示され、ビルドに失敗した場合は、追加のSDKをインストールする。詳細はpyenvのWiki参照。

# Xcode Command Line Tool(未インストールの場合)

xcode-select --install

# Mojave or higher (10.14+)を使ってる場合、追加でSDKをインストール
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /


Pythonの設定を確認する。

global指定したPython3.6.0が反映されていないようなので、pyenvの設定状況とPythonのパスを確認した。

# パスの確認

# 参照先が/Users/{user-name}/.pyenv/以下ではない。
which python
=>/usr/bin/python

# pyenvの設定確認(こちらは問題ない)
pyenv versions
=>
system
* 3.6.0 (set by /Users/{user-name}/.pyenv/version)
3.6.1

Pythonの参照先をpyenvで管理しているパスに変更するため、シェルに以下の設定を追加した。


fish shellにPythonのパスを指定する

fish shellを利用しているので、~/.config/fish/config.fishに以下の設定を追加した。

set PATH $HOME/.pyenv/shims $PATH

eval (pyenv init - | source)

# 設定の反映

source ~/.config/fish/config.fish


Pythonバージョンの再確認

# 参照先パスの確認

which python
=> /Users/{user-name}/.pyenv/shims/python

# バージョンの確認
python -V
=> Python 3.6.0

無事Python3系が利用できる状態になった:raised_hands: