1

I am writing a program in Python that currently uses several different packages, mainly BSD licenses, e.g. Pandas, NumPy, etc. The finished program is distributed in the form of an .exe file. My question is whether I should inform somewhere in the program that such packages were used and under what licenses?

I haven't found a clear answer anywhere.

8
  • requirements.txt file is for this or documentation. But if it is a standalone exe, then nothing is needed...
    – D.L
    Dec 20, 2023 at 21:18
  • so if I understand correctly, I am not obliged to inform in the "about the program" tab or anywhere in the program that the program uses such packages?
    – hiero
    Dec 21, 2023 at 15:11
  • it is good practice to credit content providers, but in terms of the exe file being able to run without dependencies (i.e. the technical coding part), there would be no issue since an exe is a standalone file.
    – D.L
    Dec 21, 2023 at 17:07
  • 7
    You write "mainly BSD licenses", but for this site here we would like to see a complete list of all licenses used. There are also different BSD licenses (4-clause, 3-clause, 2-clause, 0-BSD), you should clearly state, which one. And lastly, please explain what is your difficulty in understanding the license language "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution." Dec 27, 2023 at 15:53
  • 1
    The question about BSD "Redistributions in binary form" has been Asked and Answered here: opensource.stackexchange.com/questions/7278/…
    – Brandin
    Dec 28, 2023 at 13:14

1 Answer 1

3

Of course, if you package a file and provide packages that are covered by a given license, you MUST provide copyright notices if that license requires them (e.g., MIT, BSD, GNU GPL, and others like that).

In practice, many developers may avoid this, but if you want to be completely correct, you should include all the information.

The exception to this rule is when the user downloads the packages themselves (via requirements.txt file, but if you package to an EXE, I doubt this applies to you.

For Python, you can use the pip-licenses command, but it lists all the packages you have installed, not those required by requirements.txt or others, so if you want to use this tool, create a virtual environment.

I recommend this combination, but remember that you should adapt it to yourself.

pip-licenses --with-notice-file --with-license-file --output-file ThirdPartyNotices.html --format html --no-license-path

You can change the format to another, like plain text or CSV. Here, you can read the details.

pip-licenses must be installed beforehand

THIS IS NOT LEGAL ADVICE

2
  • Thank you for answer. I have another question: do I have to list all the packages I used? For example the tkintermapview package has the following dependencies: geocoder, pyperclip, pillow, pywin32, customtkinter, requests, some of them have further dependencies, should I list all of them in this case?
    – hiero
    Jan 11 at 8:29
  • If the authors of the package you are using didn't do this, you should do it this way. This may occur with packages that are only provided in source code. As I said, then the package is listed by name and there is no need to provide information in tkintermapview, because tkintermapview requires you to have these packages. You package EVERYTHING in binary, so you have to. Remember that when you install tkintermapview you are installing all the dependencies, so the pip-licenses tool should also include the licenses for all the dependencies.
    – Maniues
    Jan 12 at 10:20

Not the answer you're looking for? Browse other questions tagged or ask your own question.