macのpython環境はhomebrewで入れていたのですが、アップデートしてまたpathを通してというのはめんどくさいので、pyenvを用いて環境構築してみました。
目次
1.pyenvのインストール
とりあえずhomebrewをアップデートします。
brew update
そしてpyenvをインストールします。
brew install pyenv
pyenvのバージョンが確認できたらインストール完了です。
pyenv version
3.9.0 (set by /Users/jago39/.pyenv/version)
2.pyenvを用いてpythonをインストール
次のコマンドを実行してインストール可能なpythonのバージョンを確認します。
pyenv install --list
ずらーっと出てくるので、その中で必要なバージョンがあるか確認します。
今回は3.9.0をインストールするので次のコマンドを実行してインストールします。
pyenv install 3.9.0
インストールが終了したらバージョンを切り替えます。
pyenv global 3.9.0
インストールされているすべてのバージョンを確認したい場合は次のコマンドで確認できます。
pyenv versions
“version”だとpyenvのバージョンが表示されてしまうので注意です。
次のように表示されます。
system
3.8.6
* 3.9.0 (set by /Users/jago39/.pyenv/version)
何もインストールされていない場合はsystemだけが表示されます。また、globalで設定されているバージョンの横にはアスタリスクが付きます。
3.[トラブルシューティング]バージョンが切り替わらない
コマンドを実行したのにバージョンが切り替わらないことがあります。
まずは、どのpathが通っているのか確認します。
which python
pyenvでインストールしたpythonのpathが通っている場合は次のように表示されます。
/Users/jago39/.pyenv/shims/python
これが、次のようになっている場合pathが通っていません。
/user/bin/python
3-1.pathを通す
.bash_profileに追記します。
echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
そして、
source ~/.bash_profile
を実行します。
しかし、私の環境ではこれでも切り替わりませんでした。
3-2.解決策
次のコマンドを実行します。
pyenv init
すると次のように表示されます。(途中でshellをfishにしたのでこのような表示になっています。)
# Load pyenv automatically by appending
# the following to ~/.config/fish/config.fish:
pyenv init - | source
一番下に書かれているコマンドを実行します。
これでバージョンが切り替わります。確認しましょう。
python --version
Python 3.9.0
3-3.追記(2021/02/04)
途中でshellをfishに変更したと書いています。fish shellはbashのconfigの書き方が異なるため、これだとbranchを変更したときなどにpythonのバージョンがsystemに切り替わってしまします。
fish shellのconfigファイルのパスは次のとおりです。
.config/fish/config.fish
このファイルを開いて次の行を追加する方法があります。
source (pyenv init -|psub)
または、コマンドで書き込む方法もあります。
echo 'source (pyenv init -|psub)' >> ~/.config/fish/config.fish
その後、3-2の手順を行います。
4.VScodeにpythonを正しく認識させる
windowsで行ったことをmacでも行います。
まずはpythonのpathを確認します。
which python
私の環境の場合は次の場所でした。
/Users/jago39/.pyenv/shims/python
次にVScodeのsetting.jsonを開き、次の1文を追加します。値は先程確認したパスです。
"python.pythonPath": "/Users/jago39/.pyenv/shims/python",
VScodeを再起動すれば完了です。
5.おわりに
バイト先で調べながら作業をしていましたが、試行錯誤しても使った通信容量が100MB程度だったので、思ったほどじゃないなと思いました。ぶっちゃけバイト先のツール作成なのにバイト先のwifi使えないのどうなんだろうって感じなんですけど。
6.参考文献
pyenvでPythonのバージョンを切り替えられない場合の対処法+
VSCodeのpyhton環境(pyenv)を整える(MacOS, flake8+autopep8)
[python を入れる](https://nju33.com/notes/fish-shell/articles/python を入れる)