【发布时间】:2016-04-18 01:29:21
【问题描述】:
我需要使用 python 开发一个在 android 上运行的程序。为此,我听说 kivy 是最好的模块。所以我尝试在我的电脑上安装和运行 kivy。 我的是 Windows 7 电脑。
为了实现这一点,我做了以下事情:
- 我从https://pypi.python.org/pypi/Kivy#downloads下载了包文件
- 然后我用win rar打开包并将内容粘贴到我的python27/lib文件夹中
现在当我输入以下内容时
import kivy
以下消息来了:
[INFO ] [Logger ] Record log in
C:\Users\UserName\.kivy\logs\kivy_16-04-17_4.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v2.7.4 (default, Apr 6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)]
但是当我尝试运行像这样简单的代码时:
import kivy
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()
弹出如下错误信息。
Traceback (most recent call last):
File "D:/Python27/unfinished buisness/ufb.py", line 4, in <module>
from kivy.app import App
File "D:\Python27\lib\kivy\app.py", line 327, in <module>
from kivy.uix.widget import Widget
File "D:\Python27\lib\kivy\uix\widget.py", line 219, in <module>
from kivy.graphics import (
File "D:\Python27\lib\kivy\graphics\__init__.py", line 89, in <module>
from kivy.graphics.instructions import Callback, Canvas, CanvasBase, \
ImportError: DLL load failed: The specified module could not be found.
(但是当我使用 Qpython { 已经安装了 kivy } 在我的 android 手机上运行此代码时,它运行顺利)
我哪里出错了?我是不是安装错了?
甚至可以在电脑上运行 Kivy 吗?还是只能在安卓手机上运行?
另外,我想建议我们可以使用 python 开发 android 应用程序的任何其他模块。
【问题讨论】:
-
大约一年前我在 Kivy 做过一些工作(在 PC 上,但在 Ubuntu 上)。我不能告诉你出了什么问题,但它在我的机器上运行没有任何问题。我记得 Kivy 是,至少在那个时候,它已经发展成为尽可能多的跨平台。不利的一面是,python 代码被翻译成 Java 并通过奇怪的 mp3 格式发送,导致即使是非常小的应用程序(单击一个按钮)也有大约 30MB 大,启动时间约为 6 秒。无论如何,尝试通过他们的 IRC 联系 Kivy 开发人员,这是恕我直言的最佳方式。
-
@quapka mp3 仅作为包含其他文件的“文件”存在(如果您愿意,可以存档)。由于 python 解释器,每个 APK 都很大,但有人建议如何使它更小。 APK 本身很小(虽然不像纯 java),更糟糕的是它与应用程序 data 一起使用,因为它们约为 30MB。您可以使用 Kivy Launcher(针对开发人员)或希望设备的情况会变得更好(已经有一些型号的存储空间比 Android 2.3 大很多倍)。如果您已植根手机,则可以删除不必要的数据。我知道这是不可取的,但是嘿......你想用 java 编码吗?
-
嗨@KeyWeeUsr!请不要把我之前的评论当作抱怨(尽管我同意这听起来像)。正如你所说的你想用java编码吗?我不想,我没有反对Java,只是为了一些简单的应用程序学习Java很痛苦。因此,我在找到它后立即切换到 Kivy。但它几乎让我哭了,因为它没有给出同样的可能性。我想这太好了,至少在当时是这样。我喜欢使用 Kivy 并从中获得了很多乐趣(希望如此)。你是 Kivy 的开发者之一,对吧?感谢您的出色工作!
-
@quapka 感谢您的赞美,但不......不是来自开发人员,只是一个普通用户:D 我只是为了解释事情而写它,因为我认为 OP 是初学者(至少在 kivy 中),所以可能会吓到他。实际上,您可以访问 java 类并以跨平台的方式有更多的可能性,但是是的,有限制。当我第一次看到 kivy 时,就像:“哇,有人让原始的 java 目的成为可能?而且它是可读的?”尝试“编译一次,到处运行”大声笑。给它几年时间,对于许多 kivy 应用程序来说,存储空间会更加宽容。 :)