at backyard

Color my life with the chaos of trouble.

pyinstallerをmacで利用したときに"OSError: Python library not found: libpython3.10m.dylib, libpython3.10.dylib, Python3, .Python, Python" というエラーが出た場合の対応手順メモ

pyinstallerを利用したときのエラー対応に関する備忘録です。

目次

環境

エラーが起きた際の私の環境は以下。

事象

pyinstallerを用いて下記のようなコマンドで実行ファイルを生成しようとしたら、

pyinstaller --onefile --noconsole --icon=icon.png main.py

下記のようなエラーが出て失敗した

OSError: Python library not found: libpython3.10m.dylib, libpython3.10.dylib, Python3, .Python, Python

対応方法

pyenvを用いてPython環境の構築は行っていたが、PYTHON_CONFIGURE_OPTS="--enable-shared" というオプションを付けて、再度上書きでインストールする。

PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.10.1

その後、一度pyinstallerをuninstallして、再度install。

pip uninstall pyinstaller
pip install pyinstaller

これでpyinstallerを利用したときに発生していたエラーは解消し、実行ファイルの生成が行えた。

以上備忘録でした。

余談: pyinstallerのライセンスはGPLなので商用利用などには注意

ちなみにこれらの備忘録を書きながらpyinstallerを色々と試していたのですが、ドキュメントを読んでいたときにpyinstallerのライセンスはGPLだということに気づいた。

pyinstaller.readthedocs.io

そのため商用利用などするときには注意が必要。

一応下記のような形で回避する方法もあるようだが、ポスト内にも書かれているように自己責任で、ということみたい。

spoonblog.hatenablog.com

pyinstallerはぐぐると日本語の情報もたくさん出てくるし、メジャーなやり方のようだが、ここについては気をつけたいところ。

pyinstallerがGPLで使えないなら、cx_Freezeという選択肢?

pyinstallerのだいたいツールとしてはcx_Freezeというツールもあるようだ。

github.com

こちらはまだ触っていないが、ライセンスはPython Software Foundation Licenseとなっている。

追記: ちょっと触ってみたが自身の環境だとcx_FreezeはM1 Macだと動かずにInter Macだと動いた。

調べながらのメモはtwitterに投稿しているので、そちらをこちらにもはる。

さらに追記。

その後、色々とあり、M1 Mac環境でもcx_Freezeを使えるようになった。

そちらについては下記のポストにまとめているので参照してみてください。

shinshin86.hateblo.jp