setup.py -- 私人/商业项目的配置

Posted

技术标签:

【中文标题】setup.py -- 私人/商业项目的配置【英文标题】:setup.py -- configuration for private / commercial projects 【发布时间】:2017-10-15 15:37:45 【问题描述】:

我可以在我们的setup.py 项目配置文件中添加什么来告诉开发人员该项目是私有/商业应用程序/库。

目前我设置:

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

有什么最佳做法吗?

注意:

如今,大多数项目都是开源的,并且遵循许可证模型。但是,当您在该行业工作时,软件是私有的。我的公司与可能不知道软件可以是私有的事实的离岸公司合作。因此,我想通过在setup.py 文件中指定这一点来引起他们的注意。这就是为什么我正在寻找这方面的最佳做法。

结论/解决方案

私人/专有申请,我会关注rth's recommendation:

将许可属性设置为“专有”, 添加分类器“License :: Other/Proprietary License”, 还可以添加一个LICENSE 文件。

模板会是这样的:

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

另一种方法是设置“非开源”,就像在cookiecutter-pypackage 模板中定义的那样。

【问题讨论】:

您想要的配置设置的目的是什么? “告诉开发人员该项目是私有/商业应用程序/库”是什么意思?您希望通过这样做达到什么目的? @polo:我已经编辑了我的问题以在注释中解释。 您能解释一下您希望您的开发人员如何与此配置“交互”吗?他们会积极寻找它吗(如果是的话,何时以及如何)?您是否希望在某些自动化过程中使用此配置设置(如果是,那么自动化过程是什么以及如何使用)? 【参考方案1】:

从技术上讲,许可开源软件和专有软件之间没有根本区别。

在这两种情况下,您都应该包含一个LICENSE 文件,指定您的软件可以做什么和不能做什么(请参阅this related SO question)。还建议在项目中的每个代码文件中添加一个简短的版权/许可标头(以防它们被复制到原始包文件夹之外)。

setup.py 中可以提及许可证类型,但该字段主要用于显示上传到PyPi 的 Python 包的许可证。由于您的代码不是开源的(并且不会上传到 PyPi),因此这与您的情况不太相关。

【讨论】:

同意。我们的库没有上传到 PyPi。尽管如此,它们会被上传到一个私有的 DevPi 服务器,该服务器也是官方 PyPi 的代理。所以,我们可以在 DevPi 中找到开源项目。我们的(小型)用户社区必须查看 DevPi 中的许可条款。 只需将licence="proprietary""proprietary and confidential" 放在setup.py 中,然后在LICENCE 文件和文件头中描述详细信息就可以了(参见例如softwareengineering.stackexchange.com/questions/68134/…)【参考方案2】:

如果你担心人们会错误地将你的包上传到 pypi,也许其中一些技巧会有所帮助How to disable uploading a package to PyPi unless --public is passed to the upload command

【讨论】:

抱歉,我对此功能不感兴趣。

以上是关于setup.py -- 私人/商业项目的配置的主要内容,如果未能解决你的问题,请参考以下文章

requirements.txt 与 setup.py

如何使用 setuptools 和 setup.py 从包中排除单个文件

将数据文件添加到 python 项目 setup.py

python setup.py 配置在自定义目录中安装文件

如何使用 setup.py 安装托管在私有 PyPI 中的包?

用于通过 pip 卸载的 Setup.py