1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M1 MacにPyxelを導入する

Last updated at Posted at 2021-10-06

#実行環境
-Macbook Air (M1, 2020)
-メモリ 16GB
-ストレージ 1TB

#失敗例
###とりあえず公式README通りにインストールしてみる
pyxel/README.ja.md at main · kitao/pyxel

brew install python3 gcc sdl2 sdl2_image gifsicle

ターミナルを再起動後

pip3 install -U pyxel

ターミナルを再起動後

mkdir pyxel_sample
cd ./pyxel_sample
install_pyxel_examples

###なぜかうまく動作しない
ターミナルの出力

user@MACBOOK-AIR pyxel_sample % install_pyxel_examples
Traceback (most recent call last):
  File "/opt/homebrew/bin/install_pyxel_examples", line 5, in <module>
    from pyxel.examples import install
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/__init__.py", line 10, in <module>
    from . import core  # type: ignore
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/core/__init__.py", line 42, in <module>
    _lib = _load_library()
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/core/__init__.py", line 39, in _load_library
    return cdll.LoadLibrary(lib_path)
  File "/opt/homebrew/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 452, in LoadLibrary
    return self._dlltype(name)
  File "/opt/homebrew/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib, 6): no suitable image found.  Did find:
	/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib: mach-o, but wrong architecture
	/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib: mach-o, but wrong architecture

###mach-o, but wrong architectureってなんやねん
どうやらPyxelライブラリがx86向けにビルドされていて、M1チップのアーキテクチャであるarm64に対応していないっぽい。
#どうすれば動くか
###Rosetta 2を使ったIntel環境下でやってみた
結果:変化なし
###miniforgeを使ってやってみた
下記サイト参照
Apple Silicon(M1) MacにpygameとPyxelをインストール
結果:変化なし
このサイトのコメント欄にも同じように実行できない人がいた。
###ソースコードからビルドしてみた
結果:いろいろあったけど成功!
というわけで、その手順を説明する。
#Pyxelをソースコードからビルドしてインストールする
公式ドキュメント
pyxel/README.ja.md at main · kitao/pyxel

ただし、私の環境ではこの通りに行ってもエラーが出たので、コードを少し書き換える必要があった。(sedコマンド)

brew install python3 gcc sdl2 sdl2_image gifsicle

ターミナルを再起動後

git clone https://github.com/kitao/pyxel.git
cd pyxel
sed -i -e "/macos)$/,/endif/ s/CC = g++-10/CC = g++-11/" ./pyxel/core/Makefile
make -C pyxel/core clean all
pip3 install .

ターミナルを再起動後

mkdir pyxel_sample
cd ./pyxel_sample
install_pyxel_examples
cd pyxel_examples
python3 ./01_hello_pyxel.py

これでPyxelのサンプルコードを実行できるようになった。

###追記(2021/10/13)
conda環境を使用しているとうまくインストールできないようです。
ターミナルを開いたら最初にconda deactivateを実行してください。
インストールできた後も、pyxelを使用する前にはconda deactivateを実行することをお勧めします。
筆者の環境ではcondaは導入されていなかったので干渉しませんでした。

#まとめ
M1チップに対応していないライブラリの存在もあって、プログラミング学習にM1 Macは正直向いていないと思う。今回は上手くいったがいつも解決できるとは限らないので、トラブルに自力で対応できる上級者の方はともかく、これからプログラミングを始める人にはWindowsであれMacであれ、Intel製CPU搭載機をおすすめしたい。そしてプログラミングが授業として存在する大学の生協で、M1 Macが堂々と推奨仕様モデルとして紹介されていることに納得いかない気持ちを抱いた。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?