如何让 Kivy 1.9.1 或 1.9.2 在 OSX 10.12.2 上使用 SDL2 而不是 pygame?
Posted
技术标签:
【中文标题】如何让 Kivy 1.9.1 或 1.9.2 在 OSX 10.12.2 上使用 SDL2 而不是 pygame?【英文标题】:How to I get Kivy 1.9.1 or 1.9.2 to use SDL2 instead of pygame on OSX 10.12.2? 【发布时间】:2017-06-08 18:22:58 【问题描述】:试图让 Kivy 在 brew 安装的 python 2.7.13 下的 OSX 10.12.2 上使用 SDL2 而不是 pygame。我已经运行以下命令来安装依赖项。它们似乎安装得很好,因为“brew doctor”返回干净。
brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
pip install -I Cython==0.23
然后我尝试了从源代码编译的 Kivy 1.9.2-dev0 和 1.9.1 版本,并尝试使用 SDL。我也尝试过 pip install kivy,而不是 repo 中的最新代码,但这些尝试都没有让 Kivy 识别 SDL2。
git clone http://github.com/kivy/kivy
cd kivy
USE_SDL2=1 make force
USE_OSX_FRAMEWORKS=0 sudo pip install -e kivy
bash-3.2$ KIVY_WINDOW=sdl2 KIVY_IMAGE=sdl2 KIVY_CLIPBOARD=sdl2 KIVY_TEXT=sdl2 python main.py
[INFO ] [Logger ] Record log in /Users/dancaron/.kivy/logs/kivy_17-01-23_107.txt
[INFO ] [Kivy ] v1.9.2-dev0
[INFO ] [Python ] v2.7.13 (default, Jan 23 2017, 19:04:34)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
[INFO ] [Factory ] 193 symbols loaded
[INFO ] [Image ] Providers: (img_imageio, img_tex, img_dds, img_pygame, img_ffpyplayer, img_pil, img_gif ignored)
[CRITICAL] [App ] Unable to get any Image provider, abort.
如何让 Kivy 使用 SDL2?
【问题讨论】:
【参考方案1】:我能够使用以下过程在 OSX 10.12.2 上让 SDL2 与 Kivy 1.9.2 一起工作。这假设 brew 安装了 python 2.7,并且 brew 安装了 SDL2。
1) 下载 Kivy 源码(到 /usr/local/lib/python2.7/site-packages 目录下)
git clone https://github.com/kivy/kivy
cd kivy
2) 设置环境变量以告诉 Kivy 在哪里可以找到 brewed SDL2 库,而不是使用 OSX 框架路径,并实际使用 SDL2,并构建 Kivy。
KIVY_SDL2_PATH=/usr/local/lib USE_OSX_FRAMEWORKS=0 USE_SDL2=1 make force
现在,运行您的主脚本,您应该会看到窗口提供程序是 SDL2。
bash-3.2$ python main.py
[WARNING] [Config ] Older configuration version detected (14 instead of 17)
[WARNING] [Config ] Upgrading configuration in progress.
[INFO ] [Kivy ] v1.9.2-dev0
[INFO ] [Python ] v2.7.13 (default, Jan 23 2017, 19:04:34)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
[INFO ] [Factory ] 193 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [OSC ] using <multiprocessing> for socket
[INFO ] [Window ] Provider: sdl2
在 pygame 上使用 SDL2 提供了 Retina 支持,并修复了窗口调整大小时出现黑屏等问题。
【讨论】:
以上是关于如何让 Kivy 1.9.1 或 1.9.2 在 OSX 10.12.2 上使用 SDL2 而不是 pygame?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 kivy 在 OS X 上使用特定版本的 python?