导入一个导入GPL库的库?

8 投票
3 回答
2913 浏览
提问于 2025-04-16 21:50

我正在导入一个库(reportlab),这个库是BSD许可证的,但它自己又使用了一些(一些)是GPL许可证的库。

我的问题是,如果我在Python中导入reportlab,我需要遵守BSD许可证还是GPL许可证呢?

3 个回答

3

我不是律师。从reportlab网站的第1.3节可以看到,他们希望你和他们讨论商业许可证的问题,具体内容可以查看reportlab的许可协议

如果你把GPL代码和BSD代码链接在一起,要求你把BSD代码也按照GPL来授权——这里说的是静态链接。动态链接到GPL代码是不允许的,尤其是对于非GPL的软件。实际上,这就是LGPL许可证存在的原因,它允许非(GPL)代码进行动态链接。glibc许可证中也有一个例外,因为他们希望你能用它来构建商业软件。

Linux内核的开发者们在链接问题上并不是所有人都有一致的看法。如果你是基于一个标准的API(POSIX)来开发,那么显然你不需要遵循GPL。但他们的争论比这更复杂,所以我觉得没有直接的比较。

从上面的链接可以看到:“yRXP,我们的XML解析器,遵循GNU通用公共许可证。这是因为它底下的RXP解析器也是这个许可证。如果你想在一个闭源项目中使用pyRXP,你必须和我们谈判。”这表明他们拥有pyRXP,并可以给你提供或出售不同的许可证。

这和pyQT的问题类似。你可以用它来制作GPL的软件,但如果是商业项目,你就需要付费。当然,除非你想制作一个遵循GPL的商业产品。

8

我不是法律专家。你需要遵守你使用的所有软件包的许可证。

不过,大多数人会认为,如果你只是使用这些库的公共接口,而且理论上可以用其他实现相同接口的库来替换,那么你的代码就不受GPL的限制,只有你对这些库所做的修改才会受影响。

比如,Linux内核开发社区就是持这种观点的。

补充一下:在查看了reportlab的网站后,很明显,如果你不使用PyXML解析器,那么你只需要遵循BSD许可证,因为你没有使用任何GPL代码。

另外,评论中有人提到,如果你没有分发任何GPL的软件包,你的代码是否会受到GPL的影响。因为GPL主要涉及对许可证下代码的修改和重新分发。答案是,如果你的代码是GPL代码的衍生作品,那么无论你是否重新分发原始的GPL代码,你都必须按照GPL来许可你的代码。

0

我也不是法律专家,不过我觉得只要你不打算把其他软件一起分发,这个问题就不太重要。比如,如果你只是告诉用户“你必须安装pyRXP才能使用这个”(也许换成“reportlab”会更简单),我觉得GPL(通用公共许可证)就不适用于你的代码。

补充一下:虽然在这个特定情况下使用reportlab工具包没有问题,但上面的理解似乎不太正确(可以看看agf在下面这个回答中的评论,还有他自己的回答)。

需要注意的是,reportlab工具包(虽然是同一家公司“ReportLab”出的)并不一定要使用pyRXP。它们是两个不同的东西,各自有自己的许可证。

查看reportlab的源代码,在reportlab.lib.rparsexml中,似乎只有在安装了pyRXP的情况下才会导入它(因为它没有被包含在内),如果没有pyRXP,它会使用另一个xml解析器。(我猜这是他们允许使用pyRXP的方式,同时又保持reportlab在BSD许可证下)

不过,也许你最好去reportlab的邮件列表问问……

撰写回答