名古屋出身ソフトウェアエンジニアのブログ

pip-licenses で Python プロジェクトの OSS ライセンスをまとめて確認

公開:
更新:

OSS を活用したクラウドサービス開発では、使用する OSS のライセンス管理が重要です。中でも、クラウド提供を頒布行為とみなす AGPL ライセンスの OSS が混入すると法律的な問題に発展する可能性があるため、これを確実に避ける必要があります。

今回は Python 開発において、ライセンス管理を助けてくれるツール pip-licenses について具体的な使用方法を紹介します。

pip-licenses

pip-licenses は、pip でインストールした Python のパッケージについて、そのライセンス情報をまとめてチェックできる CLI ツールです。

Python ではパッケージ管理システムを使って、実行環境でパッケージをダウンロードするのが普通です。各ライブラリの依存物もさらにパッケージ管理システムによって追加ダウンロードされるため、その再帰性から依存するパッケージの数が膨大になります。ゆえに、こうしたツールは非常に重宝します1

pip-licenses の使い方

pip-licenses は pip にインストールされているパッケージについてライセンス一覧を出力します。プロジェクトの依存 OSS について一覧結果を得ることは、空の仮想環境を作成し、そこに使っているパッケージをすべてインストールすることで達成できます。

まず、仮想環境を作り、有効化します。

python3 -m venv venv
. ./venv/bin/activate

次に、仮想環境に pip-licenses をインストールします。

# まず pip-licenses インストールする
pip3 install pip-licenses

そのあとで、プロジェクトの依存パッケージをインストールします。

# プロジェクトで使うパッケージをインストールする
pip3 install -r requirements.txt

この状態で pip-licenses を実行すると、ライセンスの一覧が表示されます。

$ pip-licenses
 Name               Version  License
 Pillow             10.0.1   Historical Permission Notice and Disclaimer (HPND)
 chainer            7.8.1    MIT License
 filelock           3.12.4   The Unlicense (Unlicense)
 h5py               3.10.0   BSD License
 numpy              1.26.0   BSD License
 protobuf           4.24.4   3-Clause BSD License
 six                1.16.0   MIT License
 tqdm               4.66.1   MIT License; Mozilla Public License 2.0 (MPL 2.0)
 typing_extensions  4.8.0    Python Software Foundation License
 websockets         11.0.3   BSD License

ここで注意が必要なのは、この一覧では pip-licenses が依存しているパッケージ自体は除外されているという点です。 setuptools など、初期からあるパッケージも無視されます。

以上が、簡単な手順で Python プロジェクトのライセンス確認が可能となる pip-licenses の紹介でした。ライセンス管理はプロジェクト運営における重要な作業の一つです。ぜひ活用してみてください。


  1. 手作業でやるのは相当キツイです。 ↩︎