无法运行' Hello World' Kivy App

时间:2016-08-17 23:27:52

标签: python kivy

我正在尝试为一个名为kivy的Python GUI库运行一个基本的hello world应用程序 - 开发人员提供here - 在Windows环境下的Ubuntu上的新Bash中。我已将示例代码保存为main.py,如下所示:

import kivy
kivy.require('1.9.1') # my current kivy version

from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):

    def build(self):
        return Label(text='Hello world')

if __name__ == '__main__':
    MyApp().run()

当我尝试使用python main.py运行这个简单的应用程序时(如果需要权限,甚至是sudo python main.py)我收到以下错误:

[INFO   ][Logger      ] Record log in /home/jdaymude/.kivy/logs/kivy_16-08-17_3.txt
[INFO   ][Kivy        ] v1.9.1
[INFO   ][Python      ] v2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2]
 Traceback (most recent call last):
   File "main.py", line 5, in <module>
     from kivy.app import App
   File "/usr/local/lib/python2.7/dist-packages/kivy/app.py", line 319, in <module>
     from kivy.base import runTouchApp, stopTouchApp
   File "/usr/local/lib/python2.7/dist-packages/kivy/base.py", line 29, in <module>
     from kivy.clock import Clock
   File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 709, in <module>
     Clock = register_context('Clock', ClockBase)
   File "/usr/local/lib/python2.7/dist-packages/kivy/context.py", line 83, in register_context
     instance = cls(*args, **kwargs)
   File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 436, in __init__
     self._start_tick = self._last_tick = self.time()
   File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 273, in _time
     raise OSError(_errno, strerror(_ernno))
 OSError: [Errno 22] Invalid argument

我还没有发现任何其他类似错误的StackOverflow问题,并且kivy issue tracker没有表明该软件存在任何相关问题。对我来说,这表明我做错了什么,所以任何建议都会有所帮助。我的Ubuntu版本是14.04,我已更新pythonpython3kivy及其所有依赖项,并已安装/成功测试了Xterm程序以启动GUI kivy应用确实有用。

在评论中进行了一些讨论之后,我将详细介绍安装以进一步说明。我按照kivy开发人员为Installation on Linux提供的说明,归结为以下内容:

sudo add-apt-repository ppa:kivy-team/kivy
sudo apt-get update
sudo apt-get install python-kivy python3-kivy

由于我是kivy的新手,想要覆盖我的所有基础,我还安装了一些安装指南"common dependencies"使用sudo apt-get install调用的内容,包括:python-devpython3-devpython-pip以及SDL2pygame的链接页面上显示的所有其他内容。虽然我想要进行全局安装与我的工作无关,但我也按照他们的说明使用了virtualenv,这也给出了同样的错误。

1 个答案:

答案 0 :(得分:0)

我不知道某个解决方案是否已在某处发布。快速谷歌搜索没有显示任何内容。我找到的一个hack是修补lib/python2.7/site-packages/kivy/clock.py文件(在你的virtualenv中)。在def _get_sleep_obj():函数定义中,强制代码转到if True or platform in ('win32', 'cygwin'):路径。

通过此更改,“Hello Word”和其他示例应用程序开始工作。