🥐

[Python] 久しぶりにMacにPython環境を構築したメモ

2024/12/31に公開

はじめに(モチベーション)

最近M4 MacBook Proを購入しましたが、普段はDockerでAIツールを動かしているため、Macのローカル環境にPython環境を構築していませんでした。
以前は各種ツールのApple Silicon対応が不十分な頃に苦労して環境構築した為、今回は改めて最新の方法を検討しました。

この記事では、M4 Mac (macOS Sequoia) で快適にPython開発を行うための環境構築手順として、pyenv, venv, conda を使い分ける前提で構築を行なっていきます。

作業環境

  • PC : MacBook Pro 14インチ / 2024
    • 16コアCPU + 40コアGPU搭載 M4 Max
    • 128 GB memory
  • OS : macOS Sequoia 15.2

最終環境

ツール バージョン 用途 補足
anyenv 1.1.5 〇〇env系の管理 asdfへの移行も検討中
pyenv 2.5.0 Pythonのバージョン管理 venv/condaの併用
autoenv 0.3.0 ディレクトリごとに環境変数・コマンドを自動実行 仮想環境のactivateを自動化
minforge miniforge3-24.9.2-0 無償のconda環境 Apple Silicon対応済みの機械学習環境構築に利用
python 3.13.0 venvで利用したバージョン 通常のPython実行環境として利用

構築

anyenv

anyenv は、pyenvnodenv などの様々な〇〇env系ツールをまとめて管理するツールです。
以前から利用しているので今回も導入しましたが、代替としてasdfというツールもあるので次回は乗り換えを検討するかもしれません。

インストール

手順
brew install anyenv

初期化

anyenv init を実行すると、.zshrceval "$(anyenv init -)" を追加するように指示されます。
しかし、この方法だとシェルの起動が遅くなる可能性があるため、以下の方法で初期化します。

公式の指示 (非推奨)
$ anyenv init
# Load anyenv automatically by adding
# the following to ~/.zshrc:

eval "$(anyenv init -)"
今回の手順

.zshrcに以下を記述します。

# initialize anyenv >>>
if [ -f "$(anyenv root)/rc.sh" ]; then
    source "$(anyenv root)/rc.sh"
fi

function __anyenv_env_update() {
    echo "update anyenv env files ..."
    local anyenv_root=$(anyenv root)
    anyenv init - >! "$anyenv_root/rc.sh"
    source "$anyenv_root/rc.sh"
    echo "done"
}
alias anyenv_env_update='__anyenv_env_update'
# <<< initialize anyenv

初回 or anyenv install xxxx で環境を追加した後、以下のコマンドを実行して設定を反映させます。

anyenv_env_update

プラグインを追加

anyenv の一括アップデートを行うためのプラグインanyenv-updateを導入します。

手順
  1. 公式の手順に従ってインストールを実行
mkdir -p $(anyenv root)/plugins
git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
  1. anyenvをアップデート
anyenv update

pyenv

pyenv はPythonのバージョン管理ツールです。
venv でも仮想環境は作成できますが、conda 環境と共存させるために pyenv を導入します。

インストール

手順
anyenv install pyenv

autoenv

autoenv はディレクトリ移動時に環境変数を自動で設定してくれるツールです。
Pythonの仮想環境のactivateを自動化するために導入します。

インストール

手順
brew install autoenv

環境設定

手順

デフォルトではディレクトリ以下の .env ファイルを読み込みますが、.env ファイルと区別するために、.autoenv.enter ファイルを利用するように変更します。
.zshrcに以下を追加します。

export AUTOENV_ENV_FILENAME=".autoenv.enter"
export AUTOENV_ENV_LEAVE_FILENAME=".autoenv.leave"
export AUTOENV_ENABLE_LEAVE=true

.autoenv.enter と .autoenv.leave の準備

手順

.autoenv.enter.autoenv.leave の雛形を準備しておきます。

.autoenv.enter
.autoenv.leave
  1. テンプレート置き場の作成
cd ~
mkdir .autoenv
  1. ファイルの保存
curl -fLo .autoenv/.autoenv.leave 'https://gist.githubusercontent.com/hk-yakan/a5bb8f72587c9b173566bf59a72022f6/raw/57e811bfa90431c89ae980e299626101217f3c18/.autoenv.leave'
curl -fLo .autoenv/.autoenv.enter 'https://gist.githubusercontent.com/hk-yakan/7c5c9dc27f1945c506c37ef80d8435bd/raw/e5428b0794fdc92a48fd78cfd0c4055ffa619647/.autoenv.enter'
  1. 利用法

プロジェクトで利用する場合は、プロジェクトのディレクトリ以下にシンボリックリンクを貼ります。

cd {実際のプロジェクトのディレクトリ}
ln -s ~/.autoenv/.autoenv.enter .autoenv.enter
ln -s ~/.autoenv/.autoenv.leave .autoenv.leave

conda (Miniforge)

今回はminiforgeを使ってconda環境を作成します。

インストール

手順

インストール可能なバージョンを確認し、インストールを実行します。

pyenv install -l | grep miniforge
pyenv install miniforge3-24.9.2-0
anyenv_env_update

環境作成

今回は、具体的な作業が決まっていたため、そのための環境を作成します。

手順
  1. ディレクトリを準備し、利用するPythonを設定
mkdir ai_sample
cd ai_sample
pyenv local miniforge3-24.9.2-0
  1. 仮想環境を作成
conda create -n ai_sample python=3.11.0
  1. autoenv の設定を実施
ln -s ~/.autoenv/.autoenv.enter .autoenv.enter
ln -s ~/.autoenv/.autoenv.leave .autoenv.leave
  1. 環境のactivate

autoenv は初回の呼び出し時に実行の許可を求めてくるのでyを押して許可します。

$ cd ..
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /.../.autoenv.leave:
...
autoenv: Are you sure you want to allow this? (y/N) y

$ cd ai_sample
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /.../.autoenv.enter:
...
autoenv: Are you sure you want to allow this? (y/N) y

venv

同様にvenvを用いた環境についてもテストの為、作成します。

手順
  1. ディレクトリの準備
mkdir py_sample
cd py_sample
  1. 必要なPythonのバージョンの準備
pyenv install 3.13.0
anyenv_env_update
pyenv local 3.13.0
  1. バージョンの確認
$ python -V
Python 3.13.0
  1. 仮想環境を作成
python -m venv .venv
  1. autoenv の設定を実施
ln -s ~/.autoenv/.autoenv.enter .autoenv.enter
ln -s ~/.autoenv/.autoenv.leave .autoenv.leave
  1. 環境のactivate

autoenv は初回の呼び出し時に実行の許可を求めてくるのでyを押して許可します。

$ cd ..
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /.../.autoenv.leave:
...
autoenv: Are you sure you want to allow this? (y/N) y

$ cd py_sample
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /.../.autoenv.enter:
...
autoenv: Are you sure you want to allow this? (y/N) y

最後に

今回はM4 MacでのPython環境構築についてまとめました。個人的には可能な限りDockerで済ませたい気持ちはありますが、ローカル環境でサクッと試したい場合もあるので、今回の環境構築は役立つはずです。

参考文献

Discussion