👾

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

2021/04/10に公開
2

Pyxelがpipで簡単にインストールできるようになりました

アップデートによりApple Silicon MacでもPyxelがpipで簡単にインストールできるようになりました。作者様に感謝です。既にインストールされている場合は、以下コマンドで一旦アンインストールしてからインストールしてください。

$ pip3 uninstall pyxel
$ pip3 install pyxel

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です。

他のライブラリ

この方法で、同様にArmアーキテクチャのPythonでは動かない、以下のようなライブラリも動かすことができます。

  • depthai
  • mediapipe

まとめ

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

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

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

関連記事

https://karaage.hatenadiary.jp/entry/2021/04/26/073000

変更履歴

  • 2022/01/02 PyxelのApple Silicon対応に関して追記

Discussion

kinozakikinozaki

知見をありがとうございます。
手順と同様に、M1Macでpyxelのみインストールしてみました。
しかし、install_pyxel_examplesを実行したところ、mach-o, but wrong architectureと出てしまいました。

そこで一点お伺いしたいのですが、この記事でのHomebrewは、Apple Silicon対応後のHomebrewでしょうか?

私のPython3(Homebrew)のパスはwhich python3opt/homebrew/bin/python3 となります。
/usr/local/bin/python3 となるのはx86のHomebrewで、やはりarmアーキテクチャ上のPythonにはまだpyxelが対応していないのではと考えました。

karaage0703karaage0703

@kinozaki さん
コメントありがとうございます。はい、armアーキテクチャにpyxelが対応していないという理解は、恐らく正しいと思います。