MacにはデフォルトでPythonがインストールされていますが、バージョンが古く、今後複数のバージョンを使用する可能性も考慮してバージョン管理ツールである「pyenv」(ぱいえんぶ)を使って新しいPythonをインストールしてみました。
2021/5以降はパスを通す際に一部記述を変更する必要があるということがあったので、記事にしました。内容に不備などありましたら教えていただけると幸いです。
Homebrewのバージョン確認
まずはpyenv
のインストールをするためにHomebrew
を準備します。Macでは最初から用意されていますが、一応確認しておきます。
ターミナルを開き、下記コードをコピペしてください。
brew -v
以下のようになったらOKです。
Homebrew 3.2.0
もしbrew: command not found
とか出てきた場合はHomebrewがインストールされていませんので、下記の記事などを参考にお持ちのPCにHomebrewをインストールしてください。
pyenvをインストールする
続いてPythonのバージョン管理ツール「pyenv」をインストールします。
一応既にインストールされているか、下記のコードを入力してみてください。
pyenv -v
インストールした覚えはないので、「コマンドが見つかりません」的なメッセージが返ってくるのではないでしょうか。
pyenv: command not found
ですよね。
もしここで、
pyenv x.x.x
のようにバージョン名が表示されていれば、既にインストールされているので、以下のコマンドは飛ばして結構です。
私と同様、まだインストールしていない方は以下のコマンドを入力し、pyenv
をインストールしましょう。
brew install pyenv
こういう画面が出ました。
よくわからないけど、できてるっぽい。
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
baidupcs-go pillow plow pyflow soapyrtlsdr soapysdr terminator waypoint
==> Updated Formulae
Updated 146 formulae.
==> New Casks
affinity-photo castr ears hyperkey keyboardholder lagrange
==> Updated Casks
Updated 83 casks.
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/manifests/2.0.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/blobs/sha256:06646f2a7779fc545226e0a79b26e3c7a3e50f5
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:06646f2a7779fc545226e0
######################################################################## 100.0%
==> Pouring pyenv--2.0.1.big_sur.bottle.tar.gz
🍺 /usr/local/Cellar/pyenv/2.0.1: 760 files, 2.6MB
ちゃんとインストールできたか確認しましょう。
pyenv -v
すると以下のようになりました。
pyenv 2.0.1
順調です。いい感じ。
pyenvのPATHを通す
こういう、新しくツールをインストールしたときはPATH通さなきゃ使えないんですよね。私の場合シェルはzsh
を使っているので、Qiitaなどを参考に以下のコードを入力しました。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
zshrc
を書き換えたときは変更を反映させる必要があります。
以下のコードを入力してください。
source ~/.zshrc
(参考記事)
【投稿】bashが起動時〜bashrcとbash_profileについて〜 自分メモ用
するとこんな表示が、、
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
おとなしく言われた通りにコードを入力してみる。
pyenv init
すると以下のような表示が返ってきました。
# (The below instructions are intended for common
# shell setups. See the README for more guidance
# if they don't apply and/or don't work for you.)
# Add pyenv executable to PATH and
# enable shims by adding the following
# to ~/.profile and ~/.zprofile:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)" # <--- ココがなんか違う
# Load pyenv into the shell by adding
# the following to ~/.zshrc:
eval "$(pyenv init -)"
# Make sure to restart your entire logon session
# for changes to profile files to take effect.
あれ、さっきzshrc
に書いたのと違うやつがいる。
ということでコードを修正します。(vimコマンドを使ってターミナル上で済ませます。)
vi .zshrc
i
キーを押してインサートモードにした上で、先ほどの
eval "$(pyenv init --path)"
に書き換えましょう。
書き換えたらesc
キーでコマンドモードに戻り、:wq
で保存して終了します。
そしてzshrc
を書き換えたら変更を反映させましょう。
source ~/.zshrc
最初からコレ書いとけよ、というご意見はごもっともなのですが、執筆時現在において多くの教材や記事に上記コードで説明されているものが多かったため、あえてそのままの流れて書いています。ご了承くださいませ。
で、Githubのイシュー見るともうそのままのことが書いてありますね。2021年5月にあった仕様の変更で今回のような警告が出るようになったみたいです。
https://github.com/pyenv/pyenv/issues/1906
Pythonをインストールする
さて、気を取り直してPythonのインストールをしていきます。
今回は、先ほどインストールしたpyenv
を使います。
まずは以下のコードを入力してみましょう。
pyenv install --list
インストール可能なPythonのバージョン一覧が表示されます。
Available versions:
2.1.3
2.2.3
~~
3.9.5
3.10.0b2
3.10-dev
~~
stackless-3.5.4
stackless-3.7.5
今回は3.9.5
をインストールします。
pyenv install 3.9.5
結構時間がかかりましたが、以下のような表示が返ってきました。
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.5.tar.xz...
-> https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
Installing Python-3.9.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.9.5 to /Users/bnn/.pyenv/versions/3.9.5
よくわかりませんが、できてるみたいです。
Pythonのバージョンを確認してみましょう。
python --version
Python 2.7.16
あれ?
あぁ、pyenvを用いて使用するPythonのバージョンを変更する必要がありました。
では以下のコードでpyenv
で管理しているPythonのバージョン一覧を確認してみましょう。
pyenv versions
すると以下の表示が返ってきました。
* system (set by /Users/bnn/.pyenv/version)
3.9.5
インストールはできているけどデフォルトのバージョンを使っているということです。せっかくインストールしたんだから最新版を使いたいです。
pyenv global 3.9.5
これで使用するバージョンを変更できます。
再度バージョンを確認してみましょう。
pyenv versions
すると以下の表示が返ってきました。
system
* 3.9.5 (set by /Users/bnn/.pyenv/version)
ちゃんと切り替わっているみたいです。
一応Pythonコマンドでも確認してみます。
python --version
ドキドキ...
Python 3.9.5
完璧です。
天才かもしれません。
さいごに
今回はバージョン管理ツールのpyenv
のインストール及びパスの通し方、使用するバージョンの変更方法について理解することができました。
予期せぬ警告が出たときは、落ち着いて読んでみることが大事ですね。