AppleSilicon搭載MacにPython3.8系をインストールする

2022-09-27

概要

背景

AppleSilicon(M1チップ)搭載のMacですが、Homebrewからpyenvを入れるとpython3.9がインストールされます。しかし、TensorflowなどPython3.8系が必要な場合があります。

目的

Apple Silicon搭載のMacにPython3.8系をインストールする方法を説明する。

最近はPythonに関してはDockerを用いることが多く、ローカルにインストールをしたPythonを使用することがほとんどなくなりました。Dockerでのインストール方法については「Apple Silicon搭載のMACでDockerを用いてAnacondaの環境を構築する」をご参照ください。

方法

バージョン変更

方法は簡単でこちらの記事情報に従って以下のコマンドを入力します。
まずは以下のコマンドを入力します。

$ PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install --patch 3.8.7 <<(curl -sSL "https://raw.githubusercontent.com/Homebrew/formula-patches/9811be33170a8f31a684fae6955542e31eb4e61e/python/3.8.7.patch")

入力が完了するとpython3.8.7がインストールされます。次にpyenvのバージョンを変更します。

pyenv global 3.8.7

以上でバージョンの変更は完了です。

venvの仮想環境のバージョンも変更する

Python3.8系に切り替える前に作成したvenvの仮想環境については、Pythonのバージョンが3.9系となります。(以前作成した時点から変更されない)

(venv)  user % python --version
Python 3.9.1
(venv) user % pyenv versions
  system
* 3.8.7 (set by /Users/user/.pyenv/version)
  3.9.1

調べてみると仮想環境のpythonは仮想環境を作った際のバージョンが反映されていて、一度削除して再作成をしないとバージョンが変更出来ないようです。そのためバックアップをとって一度環境を削除します。この際にpipの情報を以下のコマンドからexportしておくと後の環境構築が簡単になります。requirementsは適当な場所に保存してください。

pip freeze > requirements

仮想環境から抜けてフォルダを削除します。venvのコマンドで-clearを使うことで削除できるという記事を見つけましたが、私の環境ではなぜかclearを使っても削除出来なかったのでフォルダごと一度削除します。

(venv) user % deactivate
user % rm -rf venv

Python3.8系で再度同じ環境を作ります。

user % python3 -m venv VENV_NAME
user % source stock/bin/activate
(venv) user % python -V
Python 3.8.7

最後にバージョンを確認して3.8.7となっていれば成功です。pipからrequirementに保存してあるパッケージをインストールした後バックアップしたフォルダを戻してください。

(venv) user % pip install -r /path/to/requirements

以上で切り替え完了です。

まとめ

Apple Silicon搭載のMacにPython3.8系をインストールする方法を説明しました。どのプログラム言語もライブラリの新バージョンの対応は時間がかかりますね。