Python ライセンシング

Abstract

PyArmorは、プログラムを配布する際、ライセンスを付与するためや、不正に利用されたりすることを防ぐために利用されます。 PyArmorを使用したプログラムの難読化とコンパイルを行いましょう。

準備

pip install pyarmor
pip install nuitka
pyarmor gen hello.py
nuitka --standalone --onefile --plugin-enable=numpy dist/hello.py

実践

ライセンス生成とバインド

  1. ライセンス生成:

    pyarmor licenses --expired 2024-01-01 r001
    
  2. ハードウェア情報取得とバインド:

    • ハードディスクのシリアル番号とマックアドレスを取得し、ライセンスにバインド。

ライセンスチェック

pyarmor licenses --enable-period-mode $code

ライセンスタイプの拡張

pytransform

難読化

  1. 単一モジュールの難読化:

    pyarmor obfuscate --exact your_script.py
    
  2. パッケージ全体の難読化:

配布

  • 出力パス dist にあるファイルをエンドユーザーにコピー。
  • ランタイムパッケージとデータファイルを注意して配布。

他のプラットフォーム対応

  • 対応するプラットフォームで動作するように調整。

異なる機能を持つスクリプトの難読化

  • 適切な設定で対応。

unittestの実行と1つの実行ファイルにまとめる

  • PyArmorで実行してテストし、必要ならば単一ファイルにまとめる。

更新

  • PyUpdaterを使用してアプリケーションを更新。

ランタイム

  • pytransformを含まないランタイムパッケージの注意。

Nuitkaを使った作業

  • Nuitkaで見えない問題を解決するために対応する .pyi を生成し、難読化されたスクリプトにコピー。

その他の機能

  • データファイルの保護、docstringの削除、マルチプロセッシングの対応。

PyPIへの配布

python setup.py sdist

異なるPythonバージョンによる難読化とWheelのビルド

詳細はドキュメントを参照。