Apple Silicon(M1) MacにpygameとPyxelをインストール
Pyxelがpipで簡単にインストールできるようになりました
アップデートによりApple Silicon MacでもPyxelがpipで簡単にインストールできるようになりました。作者様に感謝です。既にインストールされている場合は、以下コマンドで一旦アンインストールしてからインストールしてください。
$ pip3 uninstall pyxel
$ pip3 install pyxel
pygameとPyxelをApple Silicon Macで使いたい
微妙にハマったのでメモです。Python環境構築、M1になって原点回帰というか、退化している気が…
事前準備
M1 Macを買いましょう。以下記事参考にセットアップしてください。
全部は実施する必要ありませんが、最低限Homebrewだけはインストールしておいてください。
そして、私はディープラーニングをしたい関係で、以下の記事の通りMiniForgeをインストールしました(TensorFlow等不要な人は、以下は飛ばして構いません)。
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を使っています。
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です。
他のライブラリ
この方法で、同様にArmアーキテクチャのPythonでは動かない、以下のようなライブラリも動かすことができます。
- depthai
- mediapipe
まとめ
PygameとPyxelをM1 Macで使う方法でした。ネットで調べたら、英語がほとんどでしたが困っている人がいそうだったので自分のメモを兼ねて記事書いてみました(困っている人日本語の記事読めないかもですが…)。
M1 MacのPython環境、Armアーキテクチャ, X86アーキテクチャ、ネイティブのXcodeのPython、HomebrewのPython, PyenvのPython、MiniForgeのPythonと組み合わせがたくさんあり、それぞれライブラリの対応状況がまちまちなのでカオスですね。
今のところは問題ありませんが、ディープラーニングと組み合わせて何かやりたいというときは今後困りそうです。Apple Silicon Mac対応が進んでくれるのを願うばかりです。
関連記事
変更履歴
- 2022/01/02 PyxelのApple Silicon対応に関して追記
Discussion
知見をありがとうございます。
手順と同様に、M1Macでpyxelのみインストールしてみました。
しかし、
install_pyxel_examples
を実行したところ、mach-o, but wrong architecture
と出てしまいました。そこで一点お伺いしたいのですが、この記事でのHomebrewは、Apple Silicon対応後のHomebrewでしょうか?
私のPython3(Homebrew)のパスは
which python3
でopt/homebrew/bin/python3
となります。/usr/local/bin/python3
となるのはx86のHomebrewで、やはりarmアーキテクチャ上のPythonにはまだpyxelが対応していないのではと考えました。@kinozaki さん
コメントありがとうございます。はい、armアーキテクチャにpyxelが対応していないという理解は、恐らく正しいと思います。