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 -- 私人/商业项目的配置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 setuptools 和 setup.py 从包中排除单个文件