我正在尝试为一个名为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,我已更新python
,python3
,kivy
及其所有依赖项,并已安装/成功测试了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-dev
,python3-dev
,python-pip
以及SDL2
和pygame
的链接页面上显示的所有其他内容。虽然我想要进行全局安装与我的工作无关,但我也按照他们的说明使用了virtualenv
,这也给出了同样的错误。
答案 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”和其他示例应用程序开始工作。