PythonでWindows用ソフトを作った時のメモ

Last Updated on 2026年5月24日 by num46

使用ライブラリ、ライブラリのインストール、ライセンスについてまとめたものです。独自解釈が多いので参考にしないこと。

AIのChatGPTに聞いたものをまとめたものなのでChatGPTに聞いた方が早いと思う。

コードが簡単、単純明快、分かりやすい。D&Dができないらしい。

🔹 標準の tkinter では、ドラッグ&ドロップによる外部アプリ(例:Google Chrome、エクスプローラ等)へのファイル受け渡しはできません。

ChatGPT

PySideとほぼ同じ。GPLライセンスで、PyQtを使ってソフトを作ったら、自作のソースコードの開示、また、自作のプログラムにもGPLライセンスを付けないといけないらしい。

PyQtはGPL v3なので商用利用無料だがソースコードを全部開示せよ。それが嫌なら商用ライセンスを買ってね

https://note.com/tsukasa_yamato/n/n2b81cb2f9701

GPLについて
https://e-words.jp/w/GPL.html

ソースコード配布例
https://www3.jvckenwood.com/download/gpl

PyQtとほぼ同じ。LGPLライセンスで、PySideを使ってソフトを作っても、動的リンクでライブラリを使用した場合、自作のソースコードの開示は不要。また、自作のプログラムにLGPLライセンスを付ける必要はないらしい。

PySideはLGPL v3に従う限り商用利用も無料ソースコード非開示でもOKだが、LGPLに従ってね。それが嫌なら商用ライセンスを買えばLGPLを無視できるよ

https://note.com/tsukasa_yamato/n/n2b81cb2f9701

LGPLについて
https://e-words.jp/w/LGPL.html


多機能で、ライセンスも緩いことから自分はPySideを使っている。

あまりよく調べていないがPyInstallerを使用した。これでEXEファイルの生成が可能。MacやLinuxの実行ファイルも生成可能らしい。

PyPIからライブラリをインストールするには、 pip (The Python Package Installer)と呼ばれるツールを使用する。

先日、生まれてはじめてPyPIにPythonライブラリを登録しました。
PyPIというのはPython Package Indexの略で、ここにパッケージを登録するとpip installでインストールできるようになります。

https://zenn.dev/sikkim/articles/490f4043230b5a

pip install PySide6
でPySide6のインストールをした。

pip install pyinstaller
でPyInstallerのインストールをした。

History and License
https://docs.python.org/3/license.html

これによると

Starting with Python 3.8.6, examples, recipes, and other code in the documentation are dual licensed under the PSF License Version 2 and the Zero-Clause BSD license.

https://docs.python.org/3/license.html

機械翻訳で訳すと
Python 3.8.6以降、ドキュメント内のサンプル、レシピ、その他のコードは、PSFライセンスバージョン2とゼロ条項BSDライセンスのデュアルライセンスで提供されています。
とのこと。

で、Zero-Clause BSD licenseは本ソフトウェアの使用、複製、改変、および/または配布は、有償・無償を問わず、いかなる目的においても許可されます。ただし何があっても責任は負わないよ、みたいな内容。

PSF License Version 2の要約(機械翻訳やChatGPTに協力してもらって独自解釈で作ったもの)

1.このライセンス契約は、PSF と Python利用者との契約です。

2.Pythonそのものや、その派生物を配布する場合、”Copyright © 2001 Python Software Foundation; All Rights Reserved”と表示する必要がある。

3.派生物を作った場合、変更内容を明記してほしい。→Python本体を改造したなら、どこを変更したか書いてください。

4.Pythonは「現状のまま」提供します。PSFは品質保証しません。問題が起きても責任を負いません。

5.何があっても一切の責任を負わないものとする。

6.重大な違反があればライセンス契約を打ち切る。

7.PSFの名前を、勝手に宣伝目的で使ってはいけない。→PSF公認みたいな誤解を招く使い方は禁止です。

8.Pythonをコピー・インストール・使用した時点で、このライセンス条件に同意したものとします。

独自解釈なので正直これを参考にするよりAIに聞いた方が良いです。

で、この2番のderivative version(派生物)についてPython自体は改変していないが、自分でコードを書いてPyInstaller でEXEファイルにしたものを配布する場合派生物に当たるのかどうか以前ChatGPTに聞いたら

あなたの EXE はどれ?

あなたのケース
Python 本体を 改変していない
Python を ライブラリとして利用
Python は 実行環境(runtime)
EXE の主役は Git Commit Exporter

👉 これは法律用語では mere aggregation(単なる同梱)
👉 派生物ではありません

たとえ PyInstaller が Python を含んでいても?

ここが最大の誤解ポイントです。

PyInstaller EXE の正体
Python インタプリタ:そのまま
Python 標準ライブラリ:そのまま
あなたのコード:別物

👉 Python 自体を「変更」していない

じゃあ、いつ表記義務が生じるの?

表記義務が生じるのはこの場合👇
あなたが Python の一部を改変し
それを Python として再配布する場合

例:

Python 3.13 を改造して独自ビルドを配布
標準ライブラリを書き換えて再配布
Python を組み込んだ「独自 Python 実行環境」を売る

👉 この場合は 確実に表記必須

ChatGPT

注:Git Commit Exporterは自作したEXEファイルのことです。

とのことでじゃあライセンス文入れなくていいか、と思っていたが改めてChatGPTに聞いたら

PyInstallerでPythonを同梱したEXEは、通常PSF License上の“派生物”ではない

これは概ね正しいです。

ただし、

派生物ではない = 何もライセンス対応不要

とは限りません。

ここが重要ポイントです。

ではなぜライセンス文を入れる話が出るの?

ここが最重要です。

PSF Licenseは、

派生物を作った場合だけライセンス表示義務がある

とは書いていません。

むしろ、

Pythonを再配布するなら、著作権表示とライセンスを保持してね

というタイプのライセンスです。

つまり:

derivativeかどうか
再配布時にライセンス文保持が必要か

は別問題です。

実務的にはどう解釈されてる?

実際のOSS配布では、

PyInstaller利用時に:

licenses/python-license.txt

を入れるケースが非常に多いです。

理由は:

python312.dll を再配布している
Python standard library を含んでいる

からです。

要するに

あなたの整理した:

PSFライセンス的には派生物ではない

だから何も不要

ではなく、

派生物ではない

でもPython本体を同梱再配布している

だからライセンス保持をしておくのが安全で一般的

という理解が最も実務に近いです。

と言われたので入れた方が良いかも?完全に納得いく内容ではないが、少なくとも入れて怒られることは無いと思う。

ただ、Hugging Face Bulk Downloader(自作ソフト)を作った時はhuggingface hubパッケージを追加したWindows embeddable package (64-bit)を同梱したのでしっかりとライセンス表記をしました。

ライセンス表記はChatGPTに頼んだところ

Python Copyright:

Copyright (C) Python Software Foundation.
Licensed under the Python Software Foundation License Version 2.
See https://www.python.org/psf/license/ for details.

のような感じになった。

まずhttps://pypi.org/project/PySide6-Addons/を見ると

Licensing
PySide6 is available under both Open Source (LGPLv3 or GPLv2 or GPLv3) and commercial license. Using PyPi is the recommended installation source, because the content of the wheels is valid for both cases. For more information, refer to the Qt Licensing page.

https://pypi.org/project/PySide6/

機械翻訳で訳すと
PySide6は、オープンソースライセンス(LGPLv3、GPLv2、またはGPLv3)および商用ライセンスの両方で利用可能です。wheelパッケージの内容はどちらのライセンスにも適用されるため、インストールにはPyPiの利用が推奨されます。詳細については、Qtのライセンスページを参照してください。
とのこと。

wheelとは?
Pythonのパッケージの形式(フォーマット)のことを指す。実態はzip形式のアーカイブであり、PEP427で定義された。

pipでパッケージをインストールする時は、wheel形式のファイルをダウンロードするところから始まる。逆に、Pythonのパッケージを作って配布したい場合は、wheel形式のファイルを作成する必要がある。

https://qiita.com/kenta1984/items/16a14f3bfaf1f257c585

なのでインストールはpip install PySide6でインストールするとLGPLv3、GPLv2、またはGPLv3および商用ライセンスどれかを好きに選べるのでpipで入れた方が良い。

Qt Licensing pageを見るとCommercial QtとQt Community Editionがある。

ChatGPTに聞くと

はい。かなり簡単に整理すると、

  • Commercial Qt
    → お金を払う代わりに、LGPL/GPL義務から解放される商用ライセンス
  • Qt Community Edition
    → LGPL/GPLで使うオープンソース版

です。

ChatGPT

みたい。また、Qt Community Editionを使うことでLGPL/GPL以外に追加で制約があるわけではないとのこと。

商用利用については

Qt Community Edition
https://www.qt.io/development/download-open-source

の下部、Frequently Asked Questions内のCan I use the Community open source version to develop my commercial product?を見ると

It depends on your own business requirements and your product. You will need to fulfill all open source license obligations with your product.

Qt Community Edition, the open source version of Qt is mainly licensed under the LGPL, versions 2.1 or 3 and GPL version 3.

https://www.qt.io/development/download-open-source

機械翻訳で訳すと
それは、貴社のビジネス要件と製品によって異なります。貴社製品においては、すべてのオープンソースライセンスの義務を遵守する必要があります。
Qt Community Edition(Qtのオープンソース版)は、主にLGPLバージョン2.1または3、およびGPLバージョン3のライセンスに基づいて提供されています。

とのこと。分かりにくい。

https://www.qt.io/ja-jp/development/download-open-source
に日本語訳があるのでそちらを見ると

Qtのオープンソース(コミュニティ版)を使って商用製品を開発できますか?
Qt Open Source Licensing
可能ですが、ご自身のビジネス要件や製品内容によって判断する必要があります。
Qtのオープンソース版(Qt Community Edition)は、主に LGPLv2.1 / LGPLv3 / GPLv3 のライセンスのもとで提供されています。

そのため、商用製品であっても、これらのオープンソースライセンスの義務をすべて満たすことが必要です。

https://www.qt.io/ja-jp/development/download-open-source

とあるように、ライセンスを満たせば問題ない、とのこと。

https://www.qt.io/development/qt-framework/featuresからライセンス形態の確認ができる。

Qt EditionsからQt Community Editionを選択し、License ModelsからLGPL v3を選ぶことでどれが使えるか、使えないかが判断できる。

PySide6はQt for PythonのことでLGPL v3を遵守することで使用できることが分かる。

PySide6を「pip install PySide6」のようにインストールするとPySide6以外にもQtCore、QtGui、QtWidgetsがインストールされるらしい(ChatGPT談)。

Qt6Core.dll、Qt6Gui.dll、Qt6Widgets.dllがそれらしい。これもhttps://www.qt.io/development/qt-framework/featuresから調べることが出来るが、上で書いたように

PySide6は、オープンソースライセンス(LGPLv3、GPLv2、またはGPLv3)および商用ライセンスの両方で利用可能です。wheelパッケージの内容はどちらのライセンスにも適用されるため、インストールにはPyPiの利用が推奨されます。

とのことなので、「pip install PySide6」でインストールしたならば、LGPLv3を守れば問題ない。はず。

LGPL v3(https://www.gnu.org/licenses/lgpl-3.0.html)についてはちょっと理解が及ばなかった。これもChatGPTにかみ砕いてもらい、ざっくりいうと

  • 改変したらその部分は公開
  • LGPL文を同梱
  • ライブラリを使ってることを隠さない
  • ユーザーが使用したライブラリを差し替え可能にする
  • ユーザーが改造Qtを動かせないようにハードウェアロックしないこと

なので「改変したらその部分は公開」、「ユーザーが改造Qtを動かせないようにハードウェアロックしないこと」に関しては通常気にする必要はない。

LGPL文を同梱」はURL(https://www.gnu.org/licenses/lgpl-3.0.html)を入れて対処。

ユーザーが使用したライブラリを差し替え可能にする」は、DLLファイルを動的リンクすることで可能。

ライセンス表記は以前はChatGPTに頼んで

PySide6 Copyright:

Copyright (C) The Qt Company Ltd.
Licensed under the GNU Lesser General Public License version 3.


Qt Libraries Copyright:

Copyright (C) The Qt Company Ltd.
Qt is available under multiple licenses, including the LGPLv3.

のように書いていたが、PySide6はQt for Pythonプロジェクトの一つであり、PySide6だけではなくShiboken6というツールがあること、全部QtなのでQt全体のライセンス表記を1つにまとめられそうなのでChatGPTにまとめてもらった。

This application uses the Qt framework.

Copyright (C) The Qt Company Ltd.
Licensed under LGPLv3.

この方がよさそう。

参考リンク
https://github.com/pyinstaller/pyinstaller
https://github.com/pyinstaller/pyinstaller/wiki/FAQ
https://pyinstaller.org/en/stable/license.html

GPL 2.0 Licenseとあるが、https://github.com/pyinstaller/pyinstaller/wiki/FAQを見ると

License

1.Can I use PyInstaller for my commercial, closed-source, Python application?
Yes.

2.If I use PyInstaller for my commercial Python application, will I have to distribute my source code as well?
Absolutely not. You can ship the executables created with PyInstaller with whatever license you want.

3.If I use PyInstaller for my commercial Python application, will I have to advertise/mention/display that PyInstaller is being used, for instance by quoting its copyright line?
Absolutely not. But we will love you if you do.

4.I need to modify PyInstaller for my own needs. Can I do that?
Of course, PyInstaller is free software. This falls under the terms of the GPL license: you can modify PyInstaller as you wish, but if you distribute your modifications (so-called derived work), you will have to do that under the GPL license. In short, you can’t change the license of PyInstaller.

5.Can I modify PyInstaller, use it for a commercial product, and never release nor distribute my modified version of PyInstaller?
Depends. PyInstaller source code is logically divided into two parts: one part is the builder itself, which constructs the executable. The other is the bootloader, which is embedded within the final executable. If you modify only the builder, then the answer is YES. If you modify also the bootloader, the answer is NO: in fact, by distributing the final product you are also distributing a binary version of the bootloader, so you are forced to release the source code for your modified version.

・How can I differentiate the bootloader from the builder?
Just read the file COPYING.txt. All bootloader related files are in directories ./bootloader/ and ./PyInstaller/loader.

https://github.com/pyinstaller/pyinstaller/wiki/FAQ

ここの1、2、3を見るに商用利用可能、ソースコード開示必要なし、自作プログラムは任意のライセンスを付けられる、PyInstallerの表記不要(でも表記してくれたらうれしい)なことが分かる。