Mac にはあらかじめ Python がインストールされています。なので、わざわざインストールする必要はありません。はい、終了〜。
というわけにもいかないので、今回は Mac に Python をインストールする方法を解説していきます。macOS 12 (Monterey) には Python 3.8 が同梱されています。2系は同梱されなくなりましたので、Python 2.x を使いたい方、逆にもっと新しいバージョンを使いたい方、複数のバージョンを切り替えて使いたい方はこちらの記事を参考にしてください。
Python のバージョン管理ツール pyenv を使います。
- Mac mini (M1, 2020)
- macOS Monterey
- Homebrew 3.5.9
Homebrew を使うので、導入してない方はまずこちらをどうぞ。
pyenv のインストール
pyenv は Python のバージョン管理ツールです。複数のバージョンの Python をインストールして、切り替えて使うことができるようになります。
そんなもんいらねーよと思っているあなた、Python をアップデートしたらプログラムが動かなくなってアタフタしているあなたの姿が私には見えています。この水晶玉にはっきりと映っているんですよ!(唐突な占い師キャラ)
準備
pyenv の情報を確認してみます。
% brew info pyenv
==> pyenv: stable 2.3.3 (bottled), HEAD
Python version management
https://github.com/pyenv/pyenv
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/pyenv.rb
License: MIT
==> Dependencies
Required: autoconf ✔, openssl@1.1 ✔, pkg-config ✔, readline ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 172,656 (30 days), 486,568 (90 days), 1,781,185 (365 days)
install-on-request: 171,195 (30 days), 481,977 (90 days), 1,759,936 (365 days)
build-error: 0 (30 days)
だから何というわけでもありませんが、私は確認したい派です。
インストール
pyenv をインストールしましょう。
% brew install pyenv
パスを通す
pyenv init
を実行してみてください。
% pyenv init
# Load pyenv automatically by appending
# the following to
~/.zprofile (for login shells)
and ~/.zshrc (for interactive shells) :
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
~/.zprofile
と ~/.zshrc
にコードを追加してねと言われるのでそうします(従順)。
% echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
% echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
% echo 'eval "$(pyenv init -)"' >> ~/.zprofile
% echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
% echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
% echo 'eval "$(pyenv init -)"' >> ~/.zshrc
設定を反映させます。(ターミナルを閉じて開き直してもOK)
% source ~/.zprofile
% source ~/.zshrc
pyenv の使い方
pyenv でよく使うサブコマンドは次のとおりです。
サブコマンド | 説明 |
---|---|
help | コマンドのヘルプを表示するpyenv help <サブコマンド> で詳しい使い方を表示 |
install | 特定のバージョンの Python をインストールする |
uninstall | 特定のバージョンの Python をアンインストールする |
global | システム全体で使う Python のバージョンを設定または表示する |
local | 特定のディレクトリで使う Python のバージョンを設定または表示する |
version | 現在の Python のバージョンとその設定ファイルを表示する |
versions | pyenv で利用可能なすべての Python バージョンを一覧表示する |
Python のインストール
インストール可能なバージョンの確認
次のコマンドで、インストール可能なバージョンの一覧を表示できます。
% pyenv install -l
Available versions:
2.1.3
2.2.3
2.3.7
...以下省略...
インストール
ここでは 2.7.18 と 3.10.6 の2つのバージョンをインストールしてみます。
% pyenv install 2.7.18
% pyenv install 3.10.6
Python のバージョン切り替え
システム全体のバージョンの切り替え
システム全体で使う Python のバージョンを設定するには、サブコマンド global
を使います。
% pyenv global 3.10.6
引数を渡さずに実行すると、現在グローバルに設定されているバージョンが表示されます。
% pyenv global
3.10.6
特定のディレクトリのバージョンの切り替え
特定のディレクトリで使う Python のバージョンを設定するには、サブコマンド local
を使います。お目当てのディレクトリに移動してから設定します。
% cd /path/to/dir
% pyenv local 2.7.18
引数を渡さずに実行すると、そのディレクトリに設定されているバージョンが表示されます。
% cd /path/to/dir
% pyenv local
2.7.18
Python のバージョンの確認
Python のバージョンを確認するコマンドは3種類あります。
# (1)現在のバージョンとその設定ファイルを表示
% pyenv version
3.10.6 (set by /Users/<username>/.pyenv/version)
# (2)現在のバージョン番号のみを表示
% pyenv version-name
3.10.6
# (3)インストール済みのバージョンを一覧表示
# 肛門マーク(*)が付いているのが現在有効なバージョン
% pyenv versions
system
2.7.18
* 3.10.6 (set by /Users/<username>/.pyenv/version)
#(おまけ)もちろん python コマンドでも確認できます
% python -V
Python 3.10.6
でわでわ
コメント
コメント一覧 (2件)
ちょうど悩んでいたんです。(と、言っても半年位になります)
私はanyenv→pyenvと言う使い方をしているんですが、これで入れたPythondがGlobalに有効でもHomebrewのFormulaにDependenciesにPython@3.9を持っているものが多くてHomebrewでもPythonが勝手にインストールされる事があって「どうしよう?冗長だよなぁ…」と思っていますが、未だに解決の糸口も見えず…
pyenvとHomebrewではPythonのインストール先ディレクトリが違いますからね。利用できるバージョンの種類も違うので、これらを一本化するのは難しいでしょうね。
それぞれのツールの利便性を享受する代償としてそういったムダが生じてしまうものと割り切って諦めるのが吉だと思います。