在 Python 3.4 中使用 Kivy

Posted

技术标签:

【中文标题】在 Python 3.4 中使用 Kivy【英文标题】:Using Kivy with Python 3.4 【发布时间】:2014-05-20 16:41:07 【问题描述】:

我已经在我的 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

【问题讨论】:

【参考方案1】:

这一行:

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

正在尝试打开一个共享对象,该对象将被编译为您安装 Kivy 所针对的显式 Python 版本。

任何包含预编译依赖项的 Python 包仅适用于编译它们的 Python 版本。

【讨论】:

我几乎没有使用 Python 的经验。我该如何解决这个问题? 此外,我的理解是 Kivy 1.8.0 是为 Python 2 和 Python 3 构建的,如下所述:kivy.org/docs/faq.html#does-kivy-support-python-3-x 如果你自己编译,那可能是真的。如果您使用的是预构建的软件包,则不会。【参考方案2】:

Kivy 尚未使用 Python 3.4 进行测试。它在 Python 3.3 上运行良好。

【讨论】:

exec /Library/Frameworks/Python.framework/Versions/3.3/bin/python "$@" (Python 3.3.5) 出现同样的错误。【参考方案3】:

我已经开始使用 Python 3.5 在 OSX El Capitan 上工作了。 Here's how I did it.

您需要 brew install 依赖项,然后修改 setup.py 以使用 brew 安装的依赖项。默认的 setup.py 会查看你的 frameworks 目录,但这不是 brew 放置新文件的地方!

【讨论】:

【参考方案4】:

我能够为 python 3.5 安装 kivy。我不需要做任何额外的事情,只需定期安装 kivy 就可以了。

【讨论】:

问题是关于 Python 3.4,而不是 3.5。 我只提到了我的经历。在我安装 kivy 的时候,文档说它不适用于我的 python 版本,但确实如此,所以我认为他的 python 版本低于我的版本,他应该能够很好地使用它。跨度>

以上是关于在 Python 3.4 中使用 Kivy的主要内容,如果未能解决你的问题,请参考以下文章

强制 Nosetests 使用 Python 2.7 而不是 3.4

用Jupyter笔记本使用python3.6而不是3.4

TypeError:对象在 DJango 1.8 Python 3.4 中不是 JSON 可序列化的

如何在 Windows 上使用 python 3.4 在 ptqt5 中获取 QtWebEngineView?

如何在 Anaconda 2.0 中使用 Python 3.4 激活 Ipython Notebook 和 QT 控制台

cx_Freeze 和 Python 3.4