在LGPL许可证中记载了可以在不改变LGPL产品的许可证的情况下,在商业封闭产品中使用未经修改的链接代码。商业产品中的LGPL许可证上的Python模块(* .py)怎么样?它被视为链接代码?在商业产品的LGPL许可证上使用Python模块
回答
我不认为这个问题(为了GPL的合法目的,导入Python模块是否被视为“链接”)已经得到解决。我认为在法院案件打开之前(甚至可能还没有),这个问题不会得到解决。 GPL(可惜)基本上是用C语言及其相关工具编写的,所以如果软件使用的语言和工具具有与C相关的语言和工具类似的特性,那么只有很明显。
但是,导入Python模块肯定在至少作为宽容的情况下动态链接到共享库;当您键入import foo
时链接到的受版权保护的文档(源文件)只有在程序实际运行后才能确定,并且可以进行简单更改后您的版权文档由最终用户在其系统上移动.py文件生成,甚至只是改变PYTHONPATH。
就个人而言,我觉得上述论点明确导致,添加import foo
到自己的源文件中的结论并不“从复制或改编的[foo.py]全部或部分以一种方式需要版权许可” 在全部为,因此如果您从不修改foo.py,则GPL并不适用。 (引自the GNU GPL version 3,在“0定义”)
(从技术上讲,我认为这种说法也适用于动态链接到一个共享的C库为好,只是这样做你通常不得不#include <foo.h>
,这意味着你编译的程序是基于foo.h的工作,即使你认为它不是基于共享库的工作。虽然你的代码将完全不受GPL的影响,但有趣的是,如果你想推出一点,你可以分发你的源代码与专有的许可证和最终用户编译自己的说明,但我离题了。)
不是常识性论据必然与法院的决定相匹配。如果您将import foo.py
视为“动态链接”与foo.py(L)GPL的目的,我不会看到你会怎么做错 - 没有人会因为遵守许可条件而起诉你技术上没有的。
虽然合乎逻辑,除非你喜欢官司,为什么要这么做呢。通用的理解是避免在商业产品中运送任何LGPL代码,除非它可以*编译成共享库二进制文件。不幸的是,Python无法将模块编译为共享库二进制文件。故事结局。 – swdev 2015-03-03 01:01:16
作为库的作者,如果我另外在Python的上下文中指定“链接”的定义,它有帮助吗? – 2017-02-10 19:14:56
@Franklin这样做改变了许可证。因此,它不会帮你使用现有的(L)GPL Python库。如果你想使用你的(L)GPL变体来发布python库,那么尽管你冒着许可证不一定被认为与GPL兼容的风险。 – Ben 2017-02-10 22:43:56
简单测试 - 用户可以将LGPL部件换成他们自己的版本吗?
由程序导入的python库肯定不是静态链接的,它的编译形式(或者源代码形式)不包含在你创建的.py(co)文件中。所以你至少要导入L/GPLed模块,因为Linux的nvidia设备驱动程序正在与内核动态链接。请记住,您不应该将免费软件与非免费软件捆绑在一起,因此,如果您使用同一个tarball/zip文件或CD为L/GPL库提供库,则可能会遇到问题。如果您将一个类从模块中分类出来,这也适用,因为您不直接包含其他模块。 (用户可以将L/GPLed模块替换为功能相同的模块,并且您的代码不会注意或关心)。唯一的灰色区域是如果您在运行时修改模块的内容,然后分发修改后的模块,此时您需要分发生成修改模块的源。 (请记住,一个.pyc,即使它包含一个submodule.a = 5行或类似的东西,也没有改变子模块,你需要腌制或者保存子模块的执行状态,然后分发保存状态以便计算为更改子模块)。
这是我认为唯一的方法来看待它,否则OpenOffice电子表格程序结合OO宏需要LGPL兼容,因为OpenOffice本身就是LGPL。导入模块的Python模块是,使用该模块,而不是从中创建派生工作。
如果我正确理解您的问题,您是问您是否可以在封闭源商业产品中使用LGPL'ed库。虽然我找不到解决这一特定情况的任何事情,但一切都表明应该没有问题。首先,有一篇关于使用LGPL in Java的文章。这是文章的相关报价:
FSF的位置始终保持不变:LGPL的工作原理与所有已知的编程语言一样,包括Java。链接到LGPL库的应用程序不需要在LGPL下发布。应用程序只需遵循LGPL第6节中的要求:允许库的新版本与应用程序链接;并允许逆向工程来调试。从文章可能相关
一种其他额外的报价:
当你与你的应用程序分发库(或自己),你需要包括库的源代码。但是,如果您的应用程序需要用户自行获取库,则不需要提供库的源代码。
而最后一个报价:
的LGPL包含继承无特殊规定,因为需要没有。继承以与传统链接相同的方式创建派生作品,并且LGPL允许以类似于允许普通函数调用的相同方式进行此类派生工作。
确实,这个特殊案件还没有在法庭上审理过(至少我知道),我不会在夜里熬夜担心。即使LGPL在这个问题上并不完全清楚,FSF已经发布了指导意见,LGPL如预期地为所有编程语言工作。一般来说,如果一份合同不明确,那么它就被解决了,而被告的利益(这是一个过于简单化,但你可以找到更多的细节here)。如果你真的很紧张,我会考虑联系Free Software Foundation。
总之,如果您将LGPL'ed库的源代码与您的应用程序(以及您的修改)一起分发,或者让最终用户单独安装此库,则您可以在Python中使用LGPL软件。
- 1. Wurfl商用产品许可证
- 2. LocalDB在小型商业产品上的许可
- 3. 我需要什么许可证才能在商业产品中使用gSOAP?
- 4. 免费的C++ ZIP解析器,具有商业产品的灵活许可证?
- 5. LGPL许可证书库
- 6. Qt LGPL许可证异常?
- 7. MySQL商业许可证费用
- 8. GPL和LGPL到商业
- 9. 带商业许可证的Micro-ORM
- 10. 用于请求/处理产品许可证密钥的Drupal模块
- 11. 许可和商业用途
- 12. Qt,LGPL,商业闭源应用程序
- 13. GNU-GhostScript-9.06的商业用途,许可证Gnu-一般公共许可证V3
- 14. 移植LGPL代码 - 我可以使用什么许可证?
- 15. GPL许可证程序产品
- 16. 在商业Java应用中使用LGPL库
- 17. GPL/LGPL下的库可以用于商业软件吗?
- 18. LGPL许可问题
- 19. Docker许可产品
- 20. 是一种商业许可工具,比用于许可软件产品的本土解决方案更好
- 21. 商业joomla模板中是否有一些许可证文件
- 22. 在drupal商业上过滤我的产品
- 23. python如何生成许可证 - 使用时间模块
- 24. 使用Ubercart的产品密钥模块
- 25. Azure上的许可软件产品
- 26. 如何在商业网站中合法使用LGPL javascript?
- 27. 验证产品许可证的测试用例...?
- 28. 如何使用btcompiler和许可证密钥保护PHP产品?
- 29. Joomla许可证和模板/模块
- 30. 如何最好地模糊我的C#产品许可证验证码?
我投票关闭这一问题作为题外话,因为它是关于许可或法律问题,而不是编程或软件开发。 [见这里](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964)和[here](http://meta.stackexchange.com/questions/139804/can-许可问题永远在主题上)以获取详细信息,以及[帮助]了解更多信息。 – JasonMArcher 2015-06-14 00:44:49