Python ライセンシング
Abstract
PyArmorは、プログラムを配布する際、ライセンスを付与するためや、不正に利用されたりすることを防ぐために利用されます。 PyArmorを使用したプログラムの難読化とコンパイルを行いましょう。
準備
pip install pyarmor
pip install nuitka
pyarmor gen hello.py
nuitka --standalone --onefile --plugin-enable=numpy dist/hello.py
実践
ライセンス生成とバインド
-
ライセンス生成:
pyarmor licenses --expired 2024-01-01 r001 -
ハードウェア情報取得とバインド:
- ハードディスクのシリアル番号とマックアドレスを取得し、ライセンスにバインド。
ライセンスチェック
pyarmor licenses --enable-period-mode $code
ライセンスタイプの拡張
pytransform
難読化
-
単一モジュールの難読化:
pyarmor obfuscate --exact your_script.py -
パッケージ全体の難読化:
- 詳細はモードを参照。
配布
- 出力パス
distにあるファイルをエンドユーザーにコピー。 - ランタイムパッケージとデータファイルを注意して配布。
他のプラットフォーム対応
- 対応するプラットフォームで動作するように調整。
異なる機能を持つスクリプトの難読化
- 適切な設定で対応。
unittestの実行と1つの実行ファイルにまとめる
- PyArmorで実行してテストし、必要ならば単一ファイルにまとめる。
更新
- PyUpdaterを使用してアプリケーションを更新。
ランタイム
pytransformを含まないランタイムパッケージの注意。
Nuitkaを使った作業
- Nuitkaで見えない問題を解決するために対応する
.pyiを生成し、難読化されたスクリプトにコピー。
その他の機能
- データファイルの保護、docstringの削除、マルチプロセッシングの対応。
PyPIへの配布
python setup.py sdist
異なるPythonバージョンによる難読化とWheelのビルド
詳細はドキュメントを参照。