在Python 3.4中使用Kivy

4 投票
4 回答
6077 浏览
提问于 2025-04-18 01:49

我在我的Mac上安装了Kivy。OS X自带Python 2.7。我想用Python 3的枚举功能,所以我安装了Python 3.4。经过一番搜索和抓狂,我找到了这一行:

exec $(python -c "import os, sys; print os.path.normpath(sys.prefix)")/bin/python2.7 "$@"

在文件/Applications/Kivy.app/Contents/Resources/script中。我把它改成了:

exec /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 "$@"

希望能强制Kivy使用Python 3.4。

现在我遇到了这个错误:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from kivy.app import App
  File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/app.py", line 321, in <module>
    from kivy.base import runTouchApp, stopTouchApp
  File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/base.py", line 29, in <module>
    from kivy.event import EventDispatcher
  File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/event.py", line 8, in <module>
    import kivy._event
ImportError: dlopen(/Applications/Kivy.app/Contents/Resources/kivy/kivy/_event.so, 2):    Symbol not found: _PyString_Type
  Referenced from: /Applications/Kivy.app/Contents/Resources/kivy/kivy/_event.so
  Expected in: flat namespace
 in /Applications/Kivy.app/Contents/Resources/kivy/kivy/_event.so

有没有人能帮我解决这个错误?或者有没有更好的方法让Kivy使用Python 3.4?

我安装的是Kivy 1.8.0。

我是在终端运行这个应用的,比如:

kivy main.py

4 个回答

0

我成功在Python 3.5上安装了kivy。其实我没做什么特别的,只是按照正常的步骤安装kivy,它就能正常工作了。

1

我在OSX El Capitan上用Python 3.5成功安装了kivy。这是我做到的步骤。

你需要先通过brew安装一些依赖项,然后修改setup.py文件,让它使用通过brew安装的那些依赖。默认的setup.py会去找你的框架目录,但brew并不会把新文件放在那个地方!

2

这一行:

dlopen(/Applications/Kivy.app/Contents/Resources/kivy/kivy/_event.so, 2)

是在尝试打开一个共享对象,这个共享对象是为你安装的Kivy所对应的特定版本的Python编译的。

任何包含预编译依赖项的Python包,只能在它们被编译时所对应的Python版本上运行。

2

Kivy还没有在Python 3.4上进行测试。不过在Python 3.3上运行得很好。

撰写回答