Title: Kivy Pack License
Date: 2017-03-07
Category: Kivy
Tags: Python,Kivy

Kivy中文编程指南:授权协议

英文原文

警告

这并不是一个律师咨询指南! Kivy 的开发组织,本指南的作者以及参与者,对任何信息缺失、产生误导,以及任何基于这份指南的行为产生的任何后果都不负任何责任。这个指南只是提供一些信息,目的是帮助缺乏经验的用户。

你的代码本身并不一定需要包括协议信息和对其他用到的软件的版权声明,不过二进制文件就不一样了。

当你创建一个二进制文件(比如 exe,app 或者 APK 等等)的时候,里面包括了 Kivy 以及其他的一些依赖项目或者你的应用程序用到的其他的包,其中的某些就可能有声明需要你再自己的应用程序中进行版权信息声明。在你对这些二进制文件进行发布之前,一定要检查所有不属于你源代码的创建出来的文件,(比如 dll,pyd,so 等等)然后如果某一个文件需要有版权信息,记得加进去版权声明。这样你才能满足 Kivy 开发需要的版权要求。

依赖包

在 Kivy 支持的每个平台上都或多或少地用到了下面这些依赖包,所以你需要添加这些授权协议进去,基本都是只要你粘贴一段版权声明到你的应用中,而不能当作自己写了这些功能代码。

对于图像和音频库,可能需要你手动去检查一下,一般都是以 lib 这三个字母开头的。这些程序的 LICENSE* 授权协议文件会在 PyInstaller 里面包含,但在 python-for-android 则没有,所以你得自己查找一下。

Windows 操作系统 (PyInstaller)

要使用 Windows API 功能, Kivy 使用了 pypiwin32 。这个包是基于 PSF 协议发布的。

VS 可再发行组件

使用 Visual Studio 编译的 Python(官方版本)使用了来自微软的一些文件,在特定条件下基于 CRT license 可以重新发布这些组件。包括这些文件名以及Py2 CRT 协议 或者 Py3 CRT 协议,主要看你用的是哪个版本的解释器,所以要针对你的发布对象来具体情况具体对待。

其他链接库

特别注意

对那些没有直接使用,但是打包的时候用到的包要列出,比如在 Windows 系统上面用的 PyInstaller。

Linux

GNU/Linux 操作系统现在有好多发行版,所以没有一个能够通用给所有发行版的指南。这部分也属于 RPi (不知道是什么鬼东西)。然而可以简化成两种打包方式,(还是用 PyInstaller 来打包)提供包含的二进制文件,或者不提供。

如果包含了二进制文件,应该逐个检查这些文件,比如 so 为扩展名的,除了你的代码之外,要找到对应这些文件的授权协议。根据这个协议你可能需要在你的程序里面添加一条对应的版权信息。

如果没有包含二进制文件,比如你用 deb 等格式的文件进行打包,那就把麻烦扔给你的用户了。你可以自己决定是否要满足其他授权的要求,例如在你的应用中是否添加额外的版权信息。

Android

APK 实际上只是一个文件压缩包,所以可以解压缩这个文件(就像 Windows 里面那样做)然后检查每个文件。

APK/assets/private.mp3/private.mp3/这个文件夹内有所有包含的文件。大多数的都是和 Kivy 、Python 或者你的代码相关的,不过那些与这些无关的就需要检查一下了。

已知的包:

有的包含的链接库是 Kivy 直接使用或者通过 Pygame/SDL2 来使用的,他们的位置在 APK/lib/armeabi/。大多数都是和依赖包相关,要么就是由 python-for-android 产生,并且可能就是 python-for-android 的一部分。例如libapplication.so等。

Mac

Missing.
这部分 Kivy 官方文档没写其他内容。

iOS

Missing.
这部分 Kivy 官方文档没写其他内容。

避免二进制文件

有一种方法也许能够避免这种很狗很麻烦的授权协议什么的鬼东西,就是不用任何第三方的鬼扯玩意来构建你的应用。你可以用 Python 来自己创立一个模块,在其中的 __main__.py都只有你自己的代码,而 setup.py 列出需要的依赖包。

这样你依然可以发布你的应用—就是你的代码,然后你就不用管任何其他的授权协议了。不过这样就更像是搭配使用,而不太算是发布程序了。这时候满足各种授权的依赖关系,就转移到你的程序的用户身上了,他们需要自行搞定运行环境来使用这个模块。如果你比较关心自己的用户,建议你还是花点时间来阅读一下可能导致的后果