Apple Silicon(M1) MacにpygameとPyxelをインストール

2 min read読了の目安(約2600字

pygameとPyxelをApple Silicon Macで使いたい

微妙にハマったのでメモです。Python環境構築、M1になって原点回帰というか、退化している気が…

事前準備

M1 Macを買いましょう。以下記事参考にセットアップしてください。

https://zenn.dev/karaage0703/articles/665e0cbdbd69f0

全部は実施する必要ありませんが、最低限Homebrewだけはインストールしておいてください。

そして、私はディープラーニングをしたい関係で、以下の記事の通りMiniForgeをインストールしました(TensorFlow等不要な人は、以下は飛ばして構いません)。

https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec

Python環境構築(Apple Silicon)

MiniForgeでPygameとPyxel動けば良いのですが、mach-o, but wrong architectureとArmじゃだめだよ的なエラーが出て動きません。X86で動かしても同じです。
一方、HomebrewでインストールするPythonだと両方とも問題なく動くのでこちらを使います。

以下コマンドでHomebrewでPython3をインストールします。

$ brew install python3

インストール完了したら、以下コマンドでMiniForgeを無効化します(MiniForgeをインストールしていない人は以下操作は不要です)。

$ conda deactivate

後は、念のための確認です。Pythonのバージョンを確認します。

$ python3 -V
Python 3.9.2

Python3の実体を確認します。実体の場所がHomebrewでインストールしたPython3(Cellar以下)になっていればOKです。

$ which python3
/usr/local/bin/python3
$ readlink /usr/local/bin/python3
../Cellar/python@3.9/3.9.2_2/bin/python3

以降の操作は、上記のようにMiniForgeが無効化された状態で行ってください。具体的には、ターミナルを立ち上げるたびにconda deactivateを実行してください。

Python環境構築(Intel)

Intel Macだと、普通にpipでインストールできます。ネイティブのPythonでも、pyenvでもMiniForgeでもOKです。私は、今はMacはApple SiliconでもIntelでもMiniForgeを使っています。

https://zenn.dev/karaage0703/articles/f3254b14898b4d

pygameのインストールと動作確認

インストール

以下コマンドを実行します。

$ conda deactivate
$ pip3 install pygame

動作確認

サンプルのスクリプトをダウンロードして実行します。

$ curl -O https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/scripts/pygame_test.py
$ python3 pygame_test.py

以下のように表示されたらOKです。

Pyxelのインストールと動作確認

インストール

Homebrewで必要なライブラリを以下コマンドでインストールします。Pyxelの公式のREADMEを参考にしています。

$ brew install gcc sdl2 sdl2_image gifsicle

続いて、以下でPyxelをインストールします。

$ conda deactivate
$ pip3 install pyxel

動作確認

サンプルのスクリプトをダウンロードして実行します。install_pyxel_examplesはPyxelのサンプルをカレントディレクトリのpyxel_examplesディレクトリにダウンロードするコマンドです(公式のREADMEに書いてあります)。

$ install_pyxel_examples
$ cd pyxel_examples
$ python3 01_hello_pyxel.py

以下のように表示されたらOKです。

まとめ

PygameとPyxelをM1 Macで使う方法でした。ネットで調べたら、英語がほとんどでしたが困っている人がいそうだったので自分のメモを兼ねて記事書いてみました(困っている人日本語の記事読めないかもですが…)。

M1 MacのPython環境、Armアーキテクチャ, X86アーキテクチャ、ネイティブのXcodeのPython、HomebrewのPython, PyenvのPython、MiniForgeのPythonと組み合わせがたくさんあり、それぞれライブラリの対応状況がまちまちなのでカオスですね。

今のところは問題ありませんが、ディープラーニングと組み合わせて何かやりたいというときは今後困りそうです。Apple Silicon Mac対応が進んでくれるのを願うばかりです。