Windowsメインで使用しているけれどmacOSの勉強中です。
macOSでPython環境を構築したので備忘的なメモを残します。
venvでの仮想環境は少し時間が立つと何の環境を作ったのか忘れるので、コマンド実行すると環境を選択できるように作ってみました(汗
macOSでPython環境構築
- 前編:pyenvで複数バージョンのPythonをインストールする
- 本記事です
- 後編:venvでPython仮想環境を作成する
目次
検証環境
- 検証日: 2024/01/31
- 実行環境
- PC
- Mac mini M2チップ 2023
- macOS Sonoma 14.2.1, Build 23C71
- zsh 5.9 (x86_64-apple-darwin23.0)
- Homebrew 4.2.8
- pyenv 2.3.35
- Python 3.10.13
- Python 3.11.7
- Python 3.12.1
- PC
注意事項
- コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
- 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。
1. 初期状態でのPythonインストール状態
macOSにPythonが入っているか確認したが、入っていなかった。
ただし、python3 --version
のように 3
を付ける元からmacOSに入っているものは使用せず、3
が付かないように新規でインストールしていく。
Windowsをメインで使っているため、3
が付くことに違和感があるんです。。。
※3
が付かないpythonコマンドは2系用だったみたいだけど、今は廃止されたらしぃ。
python --version
# 実行結果 % python --version zsh: command not found: python
2. Homebrew:パッケージマネージャー
Homebrewとは?Google Geminiに聞いてみた。
macOS上で様々なソフトウェアを簡単にインストール・アップデート・削除できるパッケージマネージャーです。
主な特徴
- 豊富なパッケージ数: 数千もの公式パッケージと、さらに多くのサードパーティ製パッケージが利用可能
- 使いやすさ: brew installのようなシンプルなコマンドでインストール
- 自動更新: パッケージを最新の状態に保つ
- 依存関係の解決: 必要なライブラリなども自動的にインストール
2.1. Homebrewのインストール
インストールコマンドは公式サイト Homebrew に記載されている。
ただ、Appleシリコン(M1, M2等)はIntel CPUの時とはインストール先が変更されたようなので、自分でPATHを通す必要がある。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Appleシリコン(M1, M2等)の場合はパスを通す必要がある。 echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc source ~/.zshrc
2.2. Homebrewのインストール確認
brew --version
# 実行結果 % brew --version Homebrew 4.2.6
3. pyenv:Pythonのバージョン管理
ツール名 | 用途 |
---|---|
pyenv | Pythonのバージョン自体を管理するツール システムに複数のPythonバージョンを同居させることが可能 |
venv / virtualenv | Pythonの仮想環境を提供するツール 異なるプロジェクトやバージョンのパッケージを分離して管理する目的で使用 |
3.1. pyenvのインストール
brew install pyenv
3.2. pyenvのインストール確認
pyenv --version
# 実行結果 % pyenv --version pyenv 2.3.35
3.3. pyenvの初期化の設定を.zshrcファイルに書き込む
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc
3.4. pyenvでインストールできるリストを表示する
# すべて pyenv install --list # Pythonの3系だけに絞る pyenv install --list | grep "^\s*3\." # Pythonの3.10だけに絞る pyenv install --list | grep "^\s*3\.10\."
# 実行結果 % pyenv install --list | grep "^\s*3\.10\." 3.10.0 3.10.1 3.10.2 3.10.3 3.10.4 3.10.5 3.10.6 3.10.7 3.10.8 3.10.9 3.10.10 3.10.11 3.10.12 3.10.13
3.5. Pythonインストールの前にhomebrewで必要なものを入れる
そのままpyenvでPythonをインストールしたらWARNINGが出た。
# WARNINGが出た時の参考 % pyenv install 3.10.13 python-build: use openssl from homebrew python-build: use readline from homebrew Downloading Python-3.10.13.tar.xz... -> https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz Installing Python-3.10.13... python-build: use readline from homebrew python-build: use zlib from xcode sdk Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/USERNAME/.pyenv/versions/3.10.13/lib/python3.10/lzma.py", line 27, in <module> from _lzma import * ModuleNotFoundError: No module named '_lzma' WARNING: The Python lzma extension was not compiled. Missing the lzma lib? Installed Python-3.10.13 to /Users/USERNAME/.pyenv/versions/3.10.13
調べてみるとlzmaの一部がmacで認識できていないらしい?
参考URL: pyenvでlzmaがない警告 MacOS
対策として、homebrewで必要なものを一気にいれる。lzmaはこの中の xz に相当するらしい。
brew install openssl readline sqlite3 xz zlib tcl-tk
3.6. pyenvでPythonをインストールする
pyenv install 3.10.13
# 実行結果 ※WARNING等が出ないで無事にインストールできた % pyenv install 3.10.13 python-build: use openssl from homebrew python-build: use readline from homebrew Downloading Python-3.10.13.tar.xz... -> https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz Installing Python-3.10.13... python-build: use tcl-tk from homebrew python-build: use readline from homebrew python-build: use zlib from xcode sdk Installed Python-3.10.13 to /Users/USERNAME/.pyenv/versions/3.10.13
3.7. pyenvでインストールしたPythonを確認する
pyenvでは3.10.13
のPythonが入っている。
pyenv versions
# 実行結果 % pyenv versions * system (set by /Users/USERNAME/.pyenv/version) 3.10.13
ただ、Pythonコマンドはまだ使えない。
python --version
# 実行結果 % python --version pyenv: python: command not found The `python' command exists in these Python versions: 3.10.13 Note: See 'pyenv help global' for tips on allowing both python2 and python3 to be found.
pyenvでシステムが利用するpythonを、インストールしたpythonに変更する必要がある。
3.8. システム全体に適用するPythonバージョンを設定する
pyenvコマンドのglobal
またはlocal
コマンドを使用して、Pythonを使用できるようにします。
pyenvコマンドのglobal
とlocal
の違い
- global
- システム全体に適用されるPythonバージョンを設定します。
- local
- コマンド実行したディレクトリに適用されるPythonバージョンを設定します。
- サブディレクトリにも適用されます。
- プロジェクト毎にPythonバージョンを分ける場合などに有効。
今回はシステム全体に適用したいため global
を選択。
pyenv global 3.10.13 python --version
# 実行結果 % pyenv global 3.10.13 % python --version Python 3.10.13
3.9. 他のPythonバージョンも入れてみる
現在のPythonバージョンのインストール状況
pyenv versions
# 実行結果 % pyenv versions system * 3.10.13 (set by /Users/USERNAME/.pyenv/version)
バージョン 3.11
と 3.12
の最新を確認する。
pyenv install --list | grep "^ 3\.11\." | tail -1 pyenv install --list | grep "^ 3\.12\." | tail -1
# 実行結果 % pyenv install --list | grep "^ 3\.11\." | tail -1 3.11.7 % pyenv install --list | grep "^ 3\.12\." | tail -1 3.12.1
他バージョンのPythonバージョンをインストールする。
pyenv install 3.11.7 pyenv install 3.12.1
Pythonバージョンのインストール状況
pyenv versions
# 実行結果 % pyenv versions system * 3.10.13 (set by /Users/USERNAME/.pyenv/version) 3.11.7 3.12.1
Python 3.12.1 を有効にしてみる。
pyenv global 3.12.1 pyenv versions python --version
# 実行結果 % pyenv global 3.12.1 % pyenv versions system 3.10.13 3.11.7 * 3.12.1 (set by /Users/USERNAME/.pyenv/version) % python --version Python 3.12.1