Kivy 在 Virtualenv 中对 SDL2 的支持
Posted
技术标签:
【中文标题】Kivy 在 Virtualenv 中对 SDL2 的支持【英文标题】:Kivy support for SDL2 in Virtualenv 【发布时间】:2017-01-01 15:59:39 【问题描述】:我按照以下步骤在 virtualenv (Mac OSX) 中安装 kivy,并支持 sdl2
$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
$ pip install -I Cython
$ USE_OSX_FRAMEWORKS=0 pip install kivy
但是当尝试运行基本文档代码时
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
class LoginScreen(GridLayout):
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.cols = 2
self.add_widget(Label(text='User Name'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
self.add_widget(Label(text='password'))
self.password = TextInput(password=True, multiline=False)
self.add_widget(self.password)
class MyApp(App):
def build(self):
return LoginScreen()
if __name__ == '__main__':
MyApp().run()
我收到以下错误
[INFO ] [Logger ] Record log in /Users/manthansharma/.kivy/logs/kivy_16-08-25_68.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v3.5.2 (default, Aug 16 2016, 05:35:40)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)]
[INFO ] [Factory ] 179 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_imageio, img_dds, img_gif (img_pygame, img_pil, img_ffpyplayer ignored)
[CRITICAL ] [Text ] Unable to find any valuable Text provider at all!
pygame - ImportError: No module named 'pygame'
File "/Users/manthansharma/virtualenvs/kivy/lib/python3.5/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "/Users/manthansharma/virtualenvs/kivy/lib/python3.5/site-packages/kivy/core/text/text_pygame.py", line 12, in <module>
import pygame
pil - ImportError: No module named 'PIL'
File "/Users/manthansharma/virtualenvs/kivy/lib/python3.5/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "/Users/manthansharma/virtualenvs/kivy/lib/python3.5/site-packages/kivy/core/text/text_pil.py", line 8, in <module>
from PIL import Image, ImageFont, ImageDraw
[CRITICAL ] [App ] Unable to get a Text provider, abort.
我也尝试在 KIVY_SDL2_PATH 中提供 sdl2.dylib 的路径,但没有得到任何结果,但使用 kivy.app 工作正常,但我想使用 virtualenv
【问题讨论】:
你能发布完整的编译日志吗? 我认为是整个日志 【参考方案1】:我在我的新 Mac (Sierra) 上遇到了类似的错误。 我遵循了https://github.com/kivy/kivy/issues/4688的建议
并使用命令安装最新版本的 KivyUSE_OSX_FRAMEWORKS=0 pip install https://github.com/kivy/kivy/zipball/master
这对我有用,Kivy 现在正在使用 SDL2 而不是在寻找 pygame。 以前,我需要 pygame,但在调整窗口大小时收到有关“Windows BMP 文件”的错误,或者如果我删除了 pygame,它没有找到我用 brew 安装的 SDL2。
【讨论】:
谢谢,在使用 brew 安装 sdl2 及其在 OSX 上的依赖项后实际上出现问题,它没有链接,所以安装了 kivy 而不支持 sdl2。抱歉,之前没有在这里提及。 是的,这就是我的意思(Kivy 没有找到通过 brew 安装的 SDL2)。您会向我们介绍您为使其正常工作所做的工作吗? 你能告诉我你是否用自制软件安装了 python 吗? @LindsayWard 是的,@hanachan1026,我用的是自制软件。我想 brew 或其他安装选项会是一样的。 谢谢@LindsayWard,我遇到了与上面相同的问题,与此不同的是我从pkg安装了python,因为我需要旧版本的python(brew无法安装旧版本的python.. ?)我通过macport重新安装了python,现在我解决了我的问题【参考方案2】:在使用自制软件旋转了很多之后,唯一对我有用的是使用 macports 安装依赖项:
sudo port install libsdl2 libsdl2_image libsdl2_ttf libsdl2_mixer
【讨论】:
以上是关于Kivy 在 Virtualenv 中对 SDL2 的支持的主要内容,如果未能解决你的问题,请参考以下文章
在 centos 7 上使用 SDL2 运行 kivy 1.9.1
如何从我的 kivy 程序中删除“sdl2 - ImportError”和“pil - ModuleNotFoundError”
例外:SDL2:无法加载图像 - 在 android 上运行 kivy apk 时