第一部分 用户指引

文档的这一部分解释了Kyy设计背后的基本思想以及为什么要使用它。接着继续讨论架构,并展示如何在短时间内使用这个框架创建惊人的应用程序。


第一章 安装

我们尽量不重蹈覆辙,而是把创新的东西推向市场。因此,我们专注于自己的代码,并在可能的情况下使用预先存在的、高质量的第三方库。

为了支持Kivy提供的完整、丰富的特征集,需要其他几个库。如果你不使用特定的功能(例如视频播放),不需要其他相应的依赖库。

但是Kivy还是需要一种依赖库,那就是Cython

此外,还需要Python 2 .x(2.7<x<3)或3 .x(3.3 <=x)解释器。如果你想启用
诸如窗口(即打开窗口)、音频/视频播放或拼写校正等特性,附加功能的依赖关系必须可用。对于这些,我们分别推荐SDL2、Gstreamer 1.x 和 PyEnchant。

其他可选库(相互独立)是:

  • OpenCV 2.0 用于摄像机输入
  • Pillow 用于图片和文本渲染
  • PyEnchant 用于拼写校正

但是,不要对这些依赖感到惊慌!
我们不希望你自己安装所有这些东西。相反,我们创造了漂亮的便携式可以直接使用的包,它们已经包含了平台的必要包。我们只想让您知道,默认值还有其他选择,并给您一个Kivy内部使用内容的概述。

1.1 依赖

以下是Kivy需要运行的列出的依赖项,并且在特定版本中有问题,导致影响了我们的核心功能,Kivy要么不编译,要么会抛出异常错误。

1.1.1 Cython

Kivy1.10.1.Dev0 至少需要 Cython版本0.23,并已通过0.27.3测试。往后的版本可能可以工作,但因为它们没有被测试,所以无法保证。目前 0.27,0.27.2版本Cython有已知的问题,不能用于Kivy

已知问题:

  • Kivy依赖的Cython 0.27 版本 声明错误导致 1.10.0的Kivy会发生编译错误。

不支持:

  • Kivy依赖的Cython 0.27 ~ 0.27.2版本 不能用于Python 3.4(带有MinGWPy)编译,因为使用了未导出的编译期间的符号。有关更多细节,请参见此问题

1.1.2 稳定版本

最新的稳定版本可以在Kivy官方网站上找到下载下载。请参考特定平台的安装说明。

1.1.2.1 在Window平台安装

从1.91开始,在现有的Python安装中,我们为Kivy 提供二进制wheel及其所有依赖项。
我们也提供了每夜由Kivy 主干构建的版本。具体内容可以查看每夜Wheel版本的安装相关内容。也可以查看从以前Kivy分发包中升级相关文档。如果将Kivy安装到修改过的位置,也可以的查看文档安装Kivy到修改的位置相关文档。

注意:对于Python 版本号 小于 3.5,我们使用MinGW编译器。但是,对于Windows上的Python 3.5 以后的版本,目前只支持MSVC编译器,因为Python关于MinGW的问题4709。一般来说,这和使用预编译的Wheel时,这不会有什么区别。

使用Kivy需要Python。Python的多个版本可以共存,但Kivy需要在你想使用它的每个python版本中安装好Kivy。

安装
安装了Python以后,打开命令行窗口,通过输入python --verison 确保python可以使用。接着做以下操作:

  1. 确保你有最新的 pipwheel
python -m pip install --upgrade pip wheel setuptools
  1. 安装依赖,(跳过 gstreamer (120MB)安装步骤) 如果你不需要的话。查看Kivy的依赖
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer

注意:如果在安装过程中遇到内存错误,请在pip install 后添加一个选项 -no-cache-dir

对于Python 3.5,我们提供额外的angle,可以用来代替glew,安装:

python -m pip install kivy.deps.angle
  1. 安装Kivy
python -m pip install kivy
  1. (可选)安装Kivy案例
python -m pip install kivy_examples

这些示例安装在Python安装的根目录下的share目录中。
这样就是全部的内容了,你可以在python中 import kivy 跑起来已经安装过的基础案例程序。

python share\kivy-examples\demo\showcase\main.py

注意:如果遇到任何权限被拒绝的错误,请尝试以管理员的身份打开命令行提示符,然后再试一次。

什么是wheels、pip 和 wheel 呢?
在python中,可以使用Python的包管理器 Pip 安装一些类似Kivy的包。有些包例如Kivy如果采用源代码安装的方式还需要额外的操作步骤,例如编译。wheels(扩展名是.whl)是一种已经预编译好的发布包,它需要额外的步骤安装。

当在PyPI上托管时,使用PIP安装一个wheels,例如:

Python -m pip install Kiy

当下载好wheels文件,想直接安装的时候,使用方式 python -m pip install wheel_file_name ,例如:

python -m pip install C:\Kivy-1.9.1.dev-cp27-none-win_amd64.whl

每夜wheels安装

警告:警告:在开发过程中使用最新开发版本可能有风险,你可能会遇到问题。如果您遇到任何错误,请向我们反馈。

kivy 的wheels文件 在每次Kivy主分支代码仓库的提交都会进行版本的构建,可以从这里获取。要是他们,而不是采用 python -m pip install kivy,我们反而会采用安装以下内容中的某一个:

  • Python 2.7, 32bit
  • Python 3.4, 32bit
  • Python 3.5, 32bit
  • Python 3.6, 32bit
  • Python 2.7, 64bit
  • Python 3.4, 64bit
  • Python 3.5, 64bit
  • Python 3.6, 64bit
  1. 执行上述安装部分的步骤1和2。
  2. 为你的系统安装正确的wheels文件
  3. 用Python -m pip wheel_name,其中wheel_name为重命名文件,然后添加DEP到PATH变量。

Kivy的案例已经从它内核程序进行了分离。这些案例程序在一个单独的wheel里面(适用于Python 2.x 和Python 3.x ):

  • Kivy examples

Kivy的依赖
我们分别为Kivy及其依赖提供wheels,所以需要的依赖才被安装。依赖项被提供为Kivy.deps的可选子包,例如kivy.deps.sdl2。
当前在Windws平台,我们提供了以下以来包:

  • gstream 用于音频和视频的播放
  • glew 和/或者 angle (仅限于3.5版本) 用于OpenGL 渲染
  • sdl2 用于控制 和/或者 用于 OpenGL

您可以使用KIVY_GL_BACKEND环境变量,通过设置为gl.(默认值)、angle或sdl2来选择这些变量中的哪些用于OpenGL。angle 目前处于实验阶段,只代替Python 3.5上的glw。

gstream 是一个可选的依赖。当只有播放音频和视频的功能需要的时候,它才需要被安装。当然ffpyplayer 也是一种可选的替代方案。

命令行
熟悉你的命令行工具。执行 pip工具或者wheel工具的时候,需要python在你的系统的环境变量中。在windows系统中,命令行工具详细内容可以查看这里内容,快捷启动方式是键盘上Win+R,在弹出的窗口中输入cmd,按下Enter,接着就会出现窗口。另外一个Linux风格的命令Shell是Git for Windows。注意,如果安装了Bash Shell ,系统自带的CMD仍然可以使用的。
尝试用这种方式吧!将Python加入系统路径中,只需要打开命令行程序,使用 cd 的命令切换到Python安装所在文件夹(例如 C:\Python27)《另外如果你只有一个版本的Python话,直接在CMD或者Bash使用这个就好了。

使用开发版本的Kivy

警告:在开发的过程中,使用最近的开发版本的Kivy会有比较大的风险,你可能会遇到一些错误。如果你遇到BUG,请及时反馈。

与其使用wheels包安装kivy,倒不如通过Git 使用kivy源代码编译和安装,这样还有其他一些步骤:

  1. Python和Python\Script目录必须在系统路径上。每次你重新编译Kiy时,才能正确工作。
  2. 确认你有最新版本的pip工具和wheels工具:
python -m pip install --upgrade pip wheel setuptools
  1. 获取编译器。对于低于3.5版本的Python,我们按照如下步骤使用mingwpy:
    (a) 新建文件 python\Lib\distutils\distutils.cfg ,然后增加两行的内容
[build]
compiler = mingw32

(b) 安装MinGW:

python -m pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy

对于Python 3.5,我们使用MSVC编译器。对于3.5,Visual Studio 2015是必需的,它是免费的。只要下载并安装它,你就可以很快熟悉了。
VisualStudio非常大,因此你也可以使用较小的VisualC构建工具来代替。

  1. 这是环境变量。在Window平台:
set USE_SDL2=1 
set USE_GSTREAMER=1

在Bash中:

export USE_SDL2=1 export USE_GSTREAMER=1

这些变量在你每次重新编译Kivy的时候需要重新设置。
5.安装其他的依赖(如果不需要视频和音频播放,可以不用安装gstream)

python -m pip install cython docutils pygments pypiwin32 kivy.deps.sdl2 \ kivy.deps.glew kivy.deps.gstreamer kivy.deps.glew_dev kivy.deps.sdl2_dev \ kivy.deps.gstreamer_dev
  1. 如果您下载或克隆Kivy到另一个位置,不想将它安装到site-packages位置,请阅读下一节。
  2. 最后,使用pip install 文件名 编译和安装kivy,其中文件名可以是url,例如用于kivy 主分支的https://github.com/kivy/kivy/archive/master.zip,或者kivy的本地副本的完整路径。

编译Kivy

  1. 从Github上clone克隆代码:
python -m pip install kivy\.
  1. 如果编译成功没有任何错误,Kivy应该是可以使用的。你可以通过运行一个基本的例子来测试它:
python share\kivy-examples\demo\showcase\main.py

安装Kivy到其他位置
在开发中,Kivy通常安装到其他备用位置,然后安装:

python -m pip install -e location

这允许Kivy在供python使用的同时保持其原始位置,这对于直接使用Git去跟踪Kivy中的更改非常有用。
为了在不同的位置使用Kivy,需要额外的调整。由于这个问题,wheels和PIP将依赖wheel安装到 python\Lib\site-packages\kivy。所以它们需要从这个位置中移到你的Kivy安装的位置。
在安装Kivy依赖项并下载或克隆Kivy到您最喜欢的位置之后,请执行以下操作:

  1. 移动内容 python\Lib\site-packages\kivy\deps to your-path\kivy\deps 到你的Kivy所在位置
  2. 移除文件夹 python\Lib\site-packages\kivy
  3. 从 python\Lib\site-packages 移动 kivy.deps.*.dist-info 目录到Kivy旁边的路径。

现在您可以用以下命令中的其中一个,安全地编译Kivy在其当前位置:

> make 
> mingw32-make 
> python -m pip install -e . 
> python setup.py build_ext --inplace

如果kivy import 失败,可能是因为你没有从site-package中删除所有的 .dist-info 文件夹 或者 kivy or kivy.deps相关信息

让Python随时随地可用
在Python上启动Python文件有两种方法。

双击的方法
如果只安装了一个Python,那么可以将所有*.py 文件与您的python关联(如果还没有),然后通过双击运行它。

  1. 右键单击要启动的Python应用程序的(.py文件扩展名)。
  2. 从弹出的菜单中选择,选择打开方式
  3. 浏览你的硬盘,找到你想要使用的\Python.exe。选择它
  4. 如果每次双击Python文件时不想重复这个过程,请选择“始终打开……”。
  5. 完成,打开文件。

Send-To的方法
你可以执行Python文件通过“发送到”菜单启动。

  1. 浏览到要使用的Python.exe文件。右击它并复制。
  2. 打开Windows资源管理器(Windows 8中的文件资源管理器),并转到地址“shell:sendTo”。你应该得到特殊的Windows目录
  3. 粘贴之前复制到的python.exe到该地方
  4. 重命名python.exe为其他名字。例如:python27-x64
    你现在可以通过右键python文件发送到 “python27-x64” 去执行python文件。
    要将新wheels安装到以前的Kivy发行版中,除了python文件夹之外,所有文件和文件夹都应该从发行版中删除。然后,这个python文件夹将被视为正常安装的系统python,然后可以继续前文安装中描述的所有步骤。

1.2.2 在Mac OS中进行安装

注意:本指南描述了建立KiVy的多种方法。建议使用自制Homebrew和PIP安装。
使用homebrew和pip

  1. 使用homebrew安装所需内容:
$ brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
  1. 使用pip安装Cython和Kivy:
$ pip install Cython==0.26.1 
$ pip install kivy

安装开发版本,在第2步骤使用以下指令:

$ pip install https://github.com/kivy/kivy/archive/master.zip

使用MacPorts和pip安装

注意:如果你想在你的Kivy App中播放音频,你就必须需要手动安装Gstreamer。最近的port文档可以从以下的获取py-gst-python port

你可以使用以下步骤安装Kivy:

  1. 安装 Macports
  2. 安装和设置Python3.4为默认的python解释器:
$ port install python34 $ port select --set python python34

3.安装和设置pip为默认的包管理器:

$ port install pip-34 
$ port select --set pip pip-34

4.使用Macports 安装必要的内容:

$ port install libsdl2 libsdl2_image libsdl2_ttf libsdl2_mixer

5.使用PIP安装Cython和Kivy:

$ pip install Cython==0.26.1 
$ pip install kivy

如果安装开发版本,你可以在第二步骤中使用以下指令:

$ pip install https://github.com/kivy/kivy/archive/master.zip

使用Kivy App

注意:Kivy.app在下载的时候不可以使用。对于更多内容,你可以查看这些[内容](https://github.com/kivy/kivy/issues/5211)。

注意:目前这个方法是在OS X 1.7中测试。对于10.7或者10.7 32位的版本。你不需要自己安装Components。我们建议使用Homebrew这个软件。

对于OS X 10.7以及更高版本,我们提供了绑定在虚拟环境中的所有依赖项的包,包括用于Kivy3.app的Python 3的解释器。这些包是用于快速原型开发的,目前是用Buildzoer包装KiVy应用程序的容器。

安装Kivy,你必须:

  1. 在这个网址中浏览最近版本的Kivy。然后下载 Kivy-osx-python.7z.
  2. 使用解压软件 Keka解压它
  3. 拷贝Kivy2.app 或者 Kivy3.app 作为 Kivy.app 到/Application这个位置。然后在终端执行以下命令行:
$ sudo mv Kivy2.app /Applications/Kivy.app
  1. 创建命名为kivy的链接,以便能够使用kivy venv快速启动应用程序:
$ ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy
  1. 所有的案例或者kivy的工具都已经包含在 Kivy.app/Contents/Resources/Kivy 的目录结构

你现在有一个Kivy的脚本可以在命令行中快速启动你的kivy应用程序。你只需要拖拽你的main.py到命令行即可。

安装 模块
OS X上的Kivy SDK使用自己的虚拟环境,当使用Kiy命令运行应用程序时,该虚拟环境被激活。如果你需要安装需要你想要的模块,你可以这样:

$ kivy -m pip install <modulename>

到底模块/文件到底安装在哪个位置呢?
在应用程序内的便携式虚拟环境里面:

Kivy.app/Contents/Resources/venv/

如果你安装一个模块(安装二进制文件,例如 kivy-garden)。这个二进制文件只有在上文提到的虚拟环境中有效。就和你执行以下命令是同样的效果:

kivy -m pip install kivy-garden

garden库只有当你激活这个环境的时候,才会变得有效:

source /Applications/Kivy.app/Contents/Resources/venv/bin/activate garden install mapview deactivate

安装二进制文件
只需要拷贝二进制文件到 ** /Applications/Kivy.app/Contents/Resources/venv/bin/ **位置

包含其他的框架
Kivy.app 发布的时候带有SDL2和Gstreamer。要包含除所提供的以外的框架,请执行以下操作:

git clone http://github.com/tito/osxrelocator export PYTHONPATH=~/path/to/osxrelocator cd /Applications/Kivy.app python -m osxrelocator -r . /Library/Frameworks/<Framework_name>.framework/ \ @executable_path/../Frameworks/<Framework_name>.framework/

不要忘记 替代<framework_name>的内容。工具osxrelocator 改变了框架中库的路径,使它们的路径是相对于.app文件的,使得Framework可以与app一起移植。

*启动任何的Kivy应用程序
你可以通过拖拽应用程序的main文件到Kivy.app
图标,以运行任何的Kivy应用程序。你可以尝试用这种方法去运行Kivy的案例程序。

从命令行启动应用程序
如果你想从命令行启动Kivy程序,在你已经拖拽Kivy.app到应用程序的文件夹厘米厚,双击 Make Symlinks 脚本。可以通过以下步骤测试是否可行:

  1. 打开命令行,然后输入:
$ kivy

2.然后输入:

import kivy

如果没有任何错误,那表示执行成功。

  1. 接着执行Kivy程序
$ kivy yourapplication.py

1.2.3 在Linux中安装

针对不同的Linux发行版要使用对应的软件包
.deb / .rpm
Ubuntu / Kubuntu / Xubuntu / Lubuntu (Saucy and above)

  1. 添加一个你想要的PPAs
    稳定构建
$ sudo add-apt-repository ppa:kivy-team/kivy 

每日构建
···
$ sudo add-apt-repository ppa:kivy-team/kivy-daily
···

  1. 使用包管理器更新 包列表
 $ sudo apt-get update 

3.安装Kivy:
Python2-python-kivy

 $ sudo apt-get install python-kivy 

Python3-python3-kivy

$ sudo apt-get install python3-kivy 

安装案例(可选)

$ sudo apt-get install python-kivyexamples

Debian (Jessie 或者更新的版本)

  1. 在APT中手动添加一个PPA到列表中
  1. 通过执行将GPG密钥添加到APT密钥环:
    如果是用户:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6

如果是Root:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6 
  1. 刷新你的包列表,然后安装python-kivy 和/或者 python3-kivy,以及安装kivy案例(可选)。

Linux Mint

  1. 了解Ubuntu发布的安装是基于什么,可以使用这个概述
  2. 取决于你的安装基于哪个版本,继续以上Ubuntu的安装描述。

Bodhi Linux

  1. 确认你现在运行的是哪个版本的发行版。使用以下列表中的去找出Ubuntu LTS是基于哪一个。
  • Bodhi 1 Ubuntu 10.04 LTS aka Lucid (No packages, just manual install)
  • Bodhi 2 Ubuntu 12.04 LTS aka Precise
  • Bodhi 3 Ubuntu 14.04 LTS aka Trusty
  • Bodhi 4 Ubuntu 16.04 LTS aka Xenial
  1. 取决于你的安装基于哪个版本,继续以上Ubuntu的安装描述。

OpenSuSE

  1. 网址安装kivy。为openSuSe的发行版使用 "1 Click Install"安装。你可能想通过点击显示不稳定版本去查阅最近的Kivy的版本。我们更喜欢通过 "devel:languages:python"去决定如何使用安装包
  2. 如果想访问kivy这些示例,请在即将安装的向导中选择Python Kivy示例。

Gentoo

  1. 有一个Kivy的稳定版
    emerge Kivy
  2. 有效的USE-FLag是:
    cairo: 标准的flag, 可以让kivy使用 cairo图形库
    camera: 安装该库,可以让kivy支持摄像机相关内容
    doc:标准的flag,可以让你本地构建文档
    examples: 标准的flag,可以让你获得kivy案例
    garden:安装garden工具,可以管理用户维护的控件
    gstreamer:标准的flag,kivy能够支持音频和视频的播放
    spell:标准的flag,可以在kivy支持拼写校正

其他
对于其他Linux发行版,我们建议通过PIP进行安装,如下所示。

1.2.4 安装一个虚拟环境

通用的依赖
Cython
Kivy的不同版本只对某个Cython版本进行了测试。

QQ图片20181029095725.png

与SDL2的依赖关系
Ubuntu 案例
在下面的命令中,在Python 2中使用“Python”和“Python-dev”,或者在Python 3中使用“Python 3”和“Python 3-dev”。

# Install necessary system packages 
sudo apt-get install -y \ 
python-pip \ 
build-essential \ 
git \ 
python \ 
python-dev \ 
ffmpeg \ 
libsdl2-dev \ 
libsdl2-image-dev \ 
libsdl2-mixer-dev \ 
libsdl2-ttf-dev \ 
libportmidi-dev \ 
libswscale-dev \ 
libavformat-dev \ 
libavcodec-dev \ 
zlib1g-dev

# Install gstreamer for audio, video (optional) 
sudo apt-get install -y \ 
libgstreamer1.0 \ 
gstreamer1.0-plugins-base \ 
gstreamer1.0-plugins-good

注意:依赖于您的Linux版本,您可能会收到与“ffmpeg”包相关的错误信息。在这种情况下,使用“libav-tools”代替“ffmpeg”,或者使用PPA(如下所示):

- sudo add-apt-repository ppa:mc3man/trusty-media 
- sudo apt-get update 
- sudo apt-get install ffmpeg

安装

#确认Pip, Virtualenv and Setuptools 已经被更新了
sudo pip install --upgrade pip virtualenv setuptools

# 然后创建一个命名为 "kivyinstall" 的 virtualenv(虚拟环境):
# 1. 使用默认的解释器
virtualenv --no-site-packages kivyinstall

# 或者 2. 使用指定的解释器
# (这样将使用位置在/usr/bin/python2.7的python解释器) 
virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall

# 输入 virtualenv
. kivyinstall/bin/activate

# 这里使用正确的Cython
pip install Cython==0.27.3

# 安装稳定的Kivy版本到virtualenv里面
pip install kivy 
# 对于开发版本的Kivy, 使用以下命令替代
# pip install git+https://github.com/kivy/kivy.git@master

与传统PyGame的依赖关系
Ubuntu 案例

# 安装系统必要的包
sudo apt-get install -y \ 
python-pip \ 
build-essential \ 
mercurial \ 
git \ 
python \ 
python-dev \ 
ffmpeg \ 
libsdl-image1.2-dev \ 
libsdl-mixer1.2-dev \ 
libsdl-ttf2.0-dev \ 
libsmpeg-dev \ 
libsdl1.2-dev \ 
libportmidi-dev \ 
libswscale-dev \ 
libavformat-dev \ 
libavcodec-dev \ 
zlib1g-dev

Fedora

$ sudo yum install \ 
make \ 
mercurial \ 
automake \ 
gcc \ 
gcc-c++ \ 
SDL_ttf-devel \ 
SDL_mixer-devel \ 
khrplatform-devel \ 
mesa-libGLES \ 
mesa-libGLES-devel \ 
gstreamer-plugins-good \ 
gstreamer \ 
gstreamer-python \ 
mtdev-devel \ 
python-devel \ 
python-pip

Fedora

$ sudo yum install \ 
make \ 
mercurial \ 
automake \ 
gcc \ 
gcc-c++ \ 
SDL_ttf-devel \ 
SDL_mixer-devel \ 
khrplatform-devel \ 
mesa-libGLES \ 
mesa-libGLES-devel \ 
gstreamer-plugins-good \ 
gstreamer \ 
gstreamer-python \ 
mtdev-devel \ 
python-devel \ 
python-pip

OpenSuse

$ sudo zypper install \ 
python-distutils-extra \ 
python-gstreamer-0_10 \ 
python-enchant \ 
gstreamer-0_10-plugins-good \ 
python-devel \ 
Mesa-devel \ 
python-pip 
$ sudo zypper install -t pattern devel_C_C++

安装

# 确认Pip, Virtualenv and Setuptools 已经更新了
sudo pip install --upgrade pip virtualenv setuptools
# 接着创建命名为“kivyinstall”的virtualenv:
# 1. 使用默认的python解释器 
virtualenv --no-site-packages kivyinstall

# 或者 2. 使用指定的解释器# (使用 /usr/bin/python2.7) 
virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall

# 进入 virtualenv 
. kivyinstall/bin/activate
pip install numpy
pip install Cython==0.27.3
# 如果你想使用pygame 后端代替 sdl2
# 你可以使用命令行export USE_SDL2=0. 安装pygame 
#  如果Kivy安装的时候找不到sdl2 库它就会自动设置该值为0,然后尝试使用pygame
pip install hg+http://bitbucket.org/pygame/pygame
#在virtualenv中安装稳定版本的kivy
pip install kivy
#对于开发版本,你可以使用以下命令代替:
pip install git+https://github.com/kivy/kivy.git@master

安装额外的Virtualenv的包

# 在 virtualenv中安装开发版本的buildozer
pip install git+https://github.com/kivy/buildozer.git@master
# 在 virtualenv中安装开发版本的plyer
pip install git+https://github.com/kivy/plyer.git@master
# 为KivyCatalog 安装依赖
pip install -U pygments docutils

从命令行启动
我们准备了运行例子。然而,这些示例被封装在包内。这意味着您必须首先知道easy_install已经安装了当前的Kivy包中,然后转到示例目录:

$ python -c "import pkg_resources; print(pkg_resources.resource_filename('kivy', '../share/kivy-examples'))"

你应该有一个路径的值:

/usr/local/lib/python2.6/dist-packages/Kivy-1.0.4_beta-py2.6-linux-x86_64.egg/share/kivy-examples/

然后你可以切换到案例文件夹中,运行:

# 执行 touchtracer 
$ cd <path to kivy-examples> 
$ cd demo/touchtracer 
$ python main.py
# 执行 pictures 
$ cd <path to kivy-examples> 
$ cd demo/pictures 
$ python main.py

如果您熟悉UNIX和符号链接,您可以在主页目录中直接创建一个链接,以便于访问。例如:

  1. 从上面的命令行获取示例路径
  2. 粘贴到命令行
$ ln -s <path to kivy-examples> ~/
  1. 然后你在你的home文件夹目录访问kivy的案例程序
$ cd ~/kivy-examples

如果你想通过脚本(./main.py)或者双击它们可以启动你的Kivy程序,你需要通过链接定义正确的python版本。例如:

$ sudo ln -s /usr/bin/python2.7 /usr/bin/kivy

或者如果你想在virtualenv中运行Kivy程序,链接到Python解释器,你可以这样:
$ sudo ln -s /home/your_username/Envs/kivy/bin/python2.7 /usr/bin/kivy
然后每一行的python文件,输入:

#!/usr/bin/kivy

注意: 谨防Python文件存储的时候以windows风格的行末(CR-LF)结束。Linux是不会忽略<CR>字符的,它会尝试使用它作为文件名的一部分。这样会产生混乱的信息。所以建议要以Unix行风格结束文件行内容。

设备权限
当你的APP启动的时候,Kivy使用 Mtdev 扫描可用的多点触控设备作为输入。对这些设备的访问通常限于具有适当权限的用户或组。
如果您无法访问这些设备,KiVy将指定这些设备记录错误或警告,,通常类似于:

Permission denied:'/dev/input/eventX'

为了使用这些设备,需要授予用户或组权限。这可以通过:

$ sudo adduser $USER input

注意,您需要退出,然后再次返回,以应用这些权限。

1.2.5 在安卓中安装

Kivy是一个Python框架,它安装在Android设备上,就像在桌面桌面机器上一样简单。然而,你可以编译Kivy应用为标准的安卓APK应用程序,运行起来和正常的Java 应用程序差不多。
我们提供了多种不同的工具帮助你在安卓的设备中运行,具体内容在安卓打包的章节中。这些包含了创建一个发布在安卓市场上的完整标准APK程序。也包含了不需要经过编译步骤,直接使用预先准备好的Kivy执行器执行Kivy apps。

1.2.6 在树莓派中安装

你可以手动安装Kivy。或者你可以下载和启动KivyPie在树莓派系统中。这些都在以下的内容中说明:

  1. 手动安装(在 Raspbian Jessie/Stretch)
sudo apt-get update 
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ 
pkg-config libgl1-mesa-dev libgles2-mesa-dev \ 
python-setuptools libgstreamer1.0-dev git-core \ 
gstreamer1.0-plugins-{bad,base,good,ugly} \ 
gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \ 
xclip xsel
  1. 安装足够新版本的Cython
sudo pip install -U Cython==0.27.3 
  1. 在你的系统中进行全局安装。
sudo pip install git+https://github.com/kivy/kivy.git@master
  1. 或者自己构建kivy(最好用于开发):
git clone https://github.com/kivy/kivy 
cd kivy
make echo "export PYTHONPATH=$(pwd):\$PYTHONPATH" >> ~/.profile 
source ~/.profile

注意:在1.10.1之前的kivy版本中,Mesa库命名更改可能导致“Unable to find any valuable Window provider”错误。如果你遇到此问题,请升级或查询问题5360

手动安装(在Raspbian Wheezy)

  1. 为GStreamer增加APT源:
deb http://vontaene.de/raspbian-updates/ . main
  1. 为vontaene.de 增加APT key
gpg --recv-keys 0C667A3E 
gpg -a --export 0C667A3E | sudo apt-key add 
  1. 安装依赖:
sudo apt-get update 
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ 
pkg-config libgl1-mesa-dev libgles2-mesa-dev \ 
python-setuptools libgstreamer1.0-dev git-core \ 
gstreamer1.0-plugins-{bad,base,good,ugly} \ 
gstreamer1.0-{omx,alsa} python-dev

  1. 从源代码中安装pip
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py 
sudo python get-pip.py
  1. 从源代码中安装Cython
sudo pip install Cython==0.26.1
  1. 在你的系统中全局安装Kivy:
sudo pip install git+https://github.com/kivy/kivy.git@master
  1. 或者自己构建Kivy(最好用于开发):
git clone https://github.com/kivy/kivy 
cd kivy
make echo "export PYTHONPATH=$(pwd):\$PYTHONPATH" >> ~/.profile 
source ~/.profile

KivyPie 发行版
KiVyPie是一种紧凑且轻量级的基于Raspbian的发行版,它配备了Kivy并准备运行。这是应用上面描述的手动安装步骤的结果,还有一些额外的工具。你可以从http://kivypie.mitako.eu/kivy-download.html下载图像并在树莓派上引导它。

运行案例
切换到你的 kivy/examples文件夹,你可以有大量的案例进行测试:
你可以开始展示:

cd kivy/examples/demo/showcase 
python main.py

3d 猴子演示也是挺有趣的:

cd kivy/examples/3Drendering 
python main.p

更改默认屏幕以使用
运行Kivy的时候 ,你可以设置环境变量 KIVY_BCM_DISPMANX_ID 修改显示。例如,强制显示HDMI的时候,可以这样:

KIVY_BCM_DISPMANX_ID=2 python main.py

使用官方的树莓派触摸显示
如果你正在使用官方的树莓派触摸显示,你需要配置Kivy以它作为输入源。可以编辑文件 ~/.kivy/config.ini中的[input]字段。增加:

mouse = mouse 
mtdev_%(name)s = probesysfs,provider=mtdev 
hid_%(name)s = probesysfs,provider=hidinput

对于更多配置Kivy的内容,可以参考配置Kivy的章节。
我们使用GPIO/物理输入在PyCON2013期间制作了些游戏:一个按钮和一个斜坡。从HTTPS://GITHUBCOM/KIVY/PIKI获取。你将需要在代码中修改GPIO引脚。还可以通过视频,看看我们正在做什么:http://www.youtube.com/watch?v=NVM09gaX6pQ

1.3 开发版本

开发版本是用于开发者和测试者的。注意,运行开发版本的Kivy,你可能冒着一定的风险运行着潜在错误的代码。要使用开发版本,你首先需要安装依赖。此后,您需要以方便开发的方式在计算机上设置Kivy。更多内容,可以查看*贡献章节

1.3.1 安装依赖

要安装Kivy的依赖项,请为你的平台按照下面的指南。你可能还需要RST和lexing组件的这些包:

$ sudo pip install pygments docutils

Ubuntu
对于Ubuntu 12.04或者以上的版本,只需要输入以下的指令就可以安装所有需要的包:

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \ 
build-essential libgl1-mesa-dev-lts-quantal libgles2-mesa-dev-lts-quantal\ 
python-pip

对于Ubuntu 15.04或者比12.04更老的版本,以下可能可以工作:

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \ 
build-essential libgl1-mesa-dev libgles2-mesa-dev zlib1g-dev python-pip

对于Ubutn16.04
···
$ sudo apt-get install python-setuptools python-pygame python-opengl \
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \
build-essential python-pip libgl1-mesa-dev libgles2-mesa-dev zlib1g-dev
···
对于Ubuntu 17.10

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-enchant python-dev build-essential python-pip libgl1-mesa-dev \ 
libgles2-mesa-dev zlib1g-dev

Kivy要求最新版本的Cython,最好使用最新支持的pypi

$ sudo pip install --upgrade Cython==0.27.3

OS X
在不使用brew的情况下,可以通过在终端中手动粘贴以下命令来安装KiVy的依赖项:

curl -O -L https://www.libsdl.org/release/SDL2-2.0.4.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.1.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.13.dmg 
curl -O -L http://gstreamer.freedesktop.org/data/pkg/osx/1.7.1/gstreamer-1.0-1.7.1-x86_64.pkg 
curl -O -L http://gstreamer.freedesktop.org/data/pkg/osx/1.7.1/gstreamer-1.0-devel-1.7.1-x86_64.pkg 
hdiutil attach SDL2-2.0.4.dmg sudo cp -a /Volumes/SDL2/SDL2.framework /Library/Frameworks/

这应该询问你的根密码,提供它,然后在你的终端粘贴下面的行:

hdiutil attach SDL2_image-2.0.1.dmg sudo cp -a /Volumes/SDL2_image/SDL2_image.framework /Library/Frameworks/ hdiutil attach SDL2_ttf-2.0.13.dmg 
sudo cp -a /Volumes/SDL2_ttf/SDL2_ttf.framework /Library/Frameworks/ hdiutil attach SDL2_mixer-2.0.1.dmg 
sudo cp -a /Volumes/SDL2_mixer/SDL2_mixer.framework /Library/Frameworks/ 
sudo installer -package gstreamer-1.0-1.7.1-x86_64.pkg -target / 
sudo installer -package gstreamer-1.0-devel-1.7.1-x86_64.pkg -target / 
pip install --upgrade --user cython pillow

现在你已经有了kivy的依赖,你需要确认已经安装了命令行工具:

xcode-select --install

切换到正确的文件夹,例如:

mkdir ~/code 
cd ~/code

你现在可以安装Kivy:

git clone http://github.com/kivy/kivy 
cd kivy 
make

这样会编译kivy,为了在你的Python环境中能够访问,需要把变量PYTHONPATH指向到以下文件夹:

export PYTHONPATH=~/code/kivy:$PYTHONPATH

检查Kivy是否安装成功,可以在命令行下面输入以下内容:

python -c "import kivy"

,然后你会得到类似以下的信息:

$ python -c "import kivy" 
[INFO ] [Logger ] Record log in /Users/quanon/.kivy/logs/kivy_15-12-31_21.txt 
[INFO ] [Screen ] Apply screen settings for Motorola Droid 2 
[INFO ] [Screen ] size=480x854 dpi=240 density=1.5 orientation=portrait 
[INFO ] [Kivy ] v1.9.1-stable 
[INFO ] [Python ] v2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)]

OSX HomeBrew
如果你更喜欢使用homebrew,可以这样安装依赖:

$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

1.3.2 安装Kivy以便开发

现在你已经所有需要的依赖,是应该下载和编译开发版本的Kivy了:
···
git clone git://github.com/kivy/kivy.git cd kivy
···
编译:

$ python setup.py build_ext --inplace -f

如果你有make工具,你也可以这样,作用和上文提到的一样:

make

警告:默认情况下,Python 2.7到2.7.2版本使用的是GCC编译器,它是和更早XCode一起发布的。到了4.2版本XCode,XCode默认情况下只有CLang编译器。这样意味着,使用XCode4.2版本或者以上的版本的,你需要确认至少安装了Python2.7.3版本,更好的是使用最新版本(截止撰稿的的时候,最新版本是2.7.5)。

如果你想修改Kivy 代码本身,建立 PYTHONPATH 环境变量 去指向你的克隆代码。这样的话,你就不用在每次很小的修改都要使用setup.py install进行安装。Python将会自动将你克隆的代码Import kivy。

或者,如果您不想对Kivy本身做任何更改,你也可以运行(如Admin,例如SUDO):
···
$ python setup.py install
···
如果你想为Kivy的代码做一份贡献的话,可以参考贡献章节。

1.3.3 运行测试套件

为了帮助检测Kivy中的问题和行为变化,提供了一组unittests。一个好的做法是在你的Kyvy安装之后和每次你想修改kivy的时候运行它们。如果你认为在Kivy遇到了一些问题,也许测试会显示相关的内容。(如果不是,那也许是好的开始。)

Kivy测试是基于nosetest的。你可以从你的包管理器中安装它

$ pip install nose

运行测试套件:

$ make test

1.3.4 卸载Kivy

如果你正在混合多个Kivy版本,你可能会对每个Kivy版本所在的位置感到困惑。你可能需要在Python库路径中多次跟踪安装多个Kivy版本。为了找出当前安装的版本,可以使用命令行:

$ python -c 'import kivy; print(kivy.__path__)'

然后递归删除该目录。

如果在Linux上安装了带有easy_install安装的Kivy,目录可能包含一个“egg”目录。也删除它:

$ python -c 'import kivy; print(kivy.__path__)' 
['/usr/local/lib/python2.7/dist-packages/Kivy-1.0.7-py2.7-linux-x86_64.egg/kivy'] 
$ sudo rm -rf /usr/local/lib/python2.7/dist-packages/Kivy-1.0.7-py2.7-linux-x86_64.egg

如果你使用apt-get安装的,使用以下方法:

$ sudo apt-get remove --purge python-kivy
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Kivy 中文文档指引 标签: Python Kivy Android [TOC] 官网链接 基于版本 Relea...
    大米zhu阅读 11,877评论 0 18
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 2,956评论 1 3
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,436评论 6 428
  • 1.macOS通过NKE(network kernel extension)机制在多个层对网络栈进行扩展。NKE其...
    zhjwang阅读 1,194评论 7 0
  • 近日学习偏轨道,呈现以往颓废式。 还好已有好心态,不抛弃来不放弃。 每日加油不能少,每日进步不能少。 点赞自己不能...
    瘦瘦塑身堂阅读 107评论 0 0