Pyinstaller と Pyarmor
Pythonを使ってGUIツールを作成したり、コードをexe化して配布する際のツールとして、Pyinstaller と Pyarmor があります。
Pyinstallerは python コードを windows なら exe file に、mac ならapp file にします。Pyarmor は製品化する際に、コードの中身が知られたくない場合に難読化してからexe化します。
今回仕事で使用する機会があったので個人的な覚書とともに共有させていただきます。
両方ともにCross Platform ではない
Pyinstaller, Pyarmor ともにcross platform ではないです。そのため、Windows、Mac、Linux それぞれで exe化、app化しなければいけません。 その際 OSのversionを一致させる (Big Surでapp化したものを、Catalinaで起動できませんでした) ことも重要です。
(Fastapiのフレームワークを使用している場合は pip install websocket==8.1
が必要でした。uvicornを使用している影響?)
環境によるコマンドの違い
flask
┝ __init__.py
└ app.py
簡単ですが、上のようなFlaskアプリを想定します。
-
Local 環境にpython やpythol library をinstall している場合
- Pyinstaller を使用
- /flask 配下 で
pyinstaller app.py
- /flask 配下 で
- pyarmor を使用
- /flask 配下で、
pyarmor pack -e " --onefile" app.py
- /flask 配下で、
- Pyinstaller を使用
-
Poetry環境下でPython, python library をinstall している場合
- Pyinstaller を使用
pyinstaller app.py
- Pyarmor を使用する際
-
pyarmor pack -e " --onefile" -x " --exclude venv --no-cross-protection" app.py
にてexe, app
化します。.venv file をexclude しなければいけないようです。
-
- Pyinstaller を使用
Pyarmor のライセンス
商用利用にはライセンス購入が必要です。
1回買いきりで7000円程度です。一つ買えば複数に使うことができる??
Pyarmorに関しては情報が少なく、特にpoetry 環境下でのBuild の方法がわからずに苦労しました!
どなたかの参考になりますと幸いです!