Kivy在Ubuntu上的安装
Kivy的安装有些麻烦呢。不能像一般的pip简单地安装。
Ubuntu 版本选择
如果你不是经验丰富的 Linux 用户,你应该选择 LTS(LongTimeSupport)版本。 至于选择哪个 LTS 版本,18.04LTS 是目前的最佳选择。
使用apt-get安装所需的内容
这与官方声明中所说的完全一致。
sudo apt-get install -y \
python-pip \
build-essential \
git \
python \
python3 \
python-dev \
python3-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
如果安装 ffmpeg 失败,请加入 libav-tools。
与 gstreamer 相关的工具是可选的,但最好包含它们,以增加可加载的视频和音频类型。
SDL2のversionとIME
请查看SDL2的WhatsNew.txt。从版本2.0.4开始支持Linux的一个输入法IBus,而从版本2.0.5开始支持Fcitx。所以需要确认您使用的输入法所对应的SDL2版本是否已安装。
请确认当前正在使用的SDL版本。
在命令行中输入 dpkg -l *libsdl2*。以下是我的环境输出。
(为便于阅读而进行了缩写和格式化。)
ii libsdl2-2.0-0:amd64 2.0.4+dfsg1-2ubuntu2
ii libsdl2-dev 2.0.4+dfsg1-2ubuntu2
ii libsdl2-image-2.0-0:amd64 2.0.1+dfsg-2+deb9u1build0.16.04
ii libsdl2-image-dev:amd64 2.0.1+dfsg-2+deb9u1build0.16.04
ii libsdl2-mixer-2.0-0:amd64 2.0.1+dfsg1-1
ii libsdl2-mixer-dev:amd64 2.0.1+dfsg1-1
ii libsdl2-ttf-2.0-0:amd64 2.0.14+dfsg1-1
ii libsdl2-ttf-dev:amd64 2.0.14+dfsg1-1
可以看出SDL2的版本是2.0.4。我正在使用IBus,所以应该没有问题。如果版本不符合要求,则说明仓库里的版本较旧,需要从源代码进行构建。在这种情况下,请按照此处的指引使用以下命令进行安装。
hg clone https://hg.libsdl.org/SDL SDL
cd SDL
mkdir build
cd build
../configure
make
sudo make install
如果无法使用hg命令,请使用sudo apt-get install mercurial进行安装。另外,请谨慎更新其他组件(mixer、image、ttf),因为我曾经有过将所有东西都升级到最新版本后导致Kivy无法运行的经验。
安装与所需Kivy版本相匹配的Cython版本。
所有的操作都将在使用pipenv或venv准备的虚拟环境上进行。
请根据此参考,在适当的版本中安装Cython。如果想要安装最新的稳定版(Kivy1.11.0),请安装Cython0.29.9。
pipenv install cython==0.29.9
又は
pip install cython==0.29.9
由于 cython 只在 kivy 安装时才需要,运行时不需要,因此在安装 kivy 后卸载或重新安装另一个version是安全的。
KivyをInstall
现在您终于可以进入 Kivy 安装程序了。
pipenv install kivy==1.11.0
又は
pip install kivy==1.11.0
还可选配以下 PACKAGE。
-
- pillow 我认为,如果装上它,就能增加可以加载的图片类型。 如今,Kivy 在没有它的情况下经常无法工作,所以它可能是必不可少的,而不是可有可无的。
-
- 如果我想使用watchdog Kviewer,就需要它。
- 如果您想使用 pygments CodeInput 的 widget 的SyntaxHighlight功能。