Laurent LAPORTE
Laurent LAPORTE

Reputation: 22952

setup.py -- configuration for private / commercial projects

What can I put on our setup.py project configuration file to tell the developers that the project is a private/commercial application/library.

Currently I set:

setup(
    name='MyProject',
    version='0.1.0',
    license='(c) My Company',
    ...
)

Any best practice?

Note:

Nowadays, most of the projects are open source, and adhere to the licences model. However, when you work on the industry, software are private. My company works with off-shore companies which may not be aware of the fact that a software can be private. So, I want to bring this fact to their attention by specifying this in the setup.py file. This is why I'm looking for best practices about that.

Conclusion/Solution

For private/proprietary applications, I will follow rth's recommendation:

The template will be something like that:

setup(
    name='MyProject',
    version='0.1.0',
    license="Proprietary",
    classifiers=[
        'License :: Other/Proprietary License',
        ...
    ],
    ...
)

An alternative could be to set “Not open source”, like defined in the cookiecutter-pypackage template.

Upvotes: 19

Views: 11956

Answers (2)

rth
rth

Reputation: 11201

Technically, there is no fundamental difference between licensing open-source and proprietary software.

In both cases you should include a LICENSE file specifying what can and cannot be done with your software (see this related SO question). It is also advised to add a short copyright / license header to every code file in your project (in case they get copied outside of the original package folder).

It is possible to mention the license type in setup.py, however that field is mainly used to display the license for Python packages uploaded to PyPi. Since your code is not open-source (and won't be uploaded to PyPi), this is not very relevant in your case.

Upvotes: 11

Fruch
Fruch

Reputation: 468

if you fear people will upload your package by mistake to pypi, maybe some of those tricks would help How to disable uploading a package to PyPi unless --public is passed to the upload command

Upvotes: 2

Related Questions