【问题标题】:setup.py -- configuration for private / commercial projectssetup.py -- 私人/商业项目的配置
【发布时间】: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:我已经编辑了我的问题以在注释中解释。
  • 您能解释一下您希望您的开发人员如何与此配置“交互”吗?他们会积极寻找它吗(如果是的话,何时以及如何)?您是否希望在某些自动化过程中使用此配置设置(如果是,那么自动化过程是什么以及如何使用)?

标签: python python-packaging


【解决方案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

【讨论】:

  • 抱歉,我对此功能不感兴趣。
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多