带kivy+matplotlib的Android.apk

2024-07-08 03:12:14 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我很抱歉,如果这是一个重复的问题,但我已经花了很多小时在这里寻找答案,并没有找到任何答案(至少可以)。在

我想(理想情况下)将python(3.6/7)脚本编译成android应用程序。我需要在代码中使用外部库,即matplotlibnumpy。在

我的android设备中有Kivy启动器,可以启动正常的(“纯”)Kivy脚本,没问题,它们工作得很好。我的代码包括matplotlib(见下文),但是,立即崩溃,因为我相信这个模块没有包含在Kivy启动器中。在

至于编译apk,我已经从https://kivy.org/#download下载了VM,其中预装并预配置了一个android的Buildozer+python for android。使用它我可以创建.apk文件,只要不包含外部模块,这些文件就可以正常安装和运行。但是,我试图将matplotlib设置为中的一个需求buildozer.spec,编译失败,并返回:

Command failed: ./distribute.sh -m "kivy matplotlib" -d "myapp"

现在,我可以使用matplotlib作为pydroid3应用程序中的脚本来运行我的代码,在这里我可以通过pip正常安装模块(kivymatplotlib,等等)。至于kivy-matplotlib接口,我正在使用kivy garden模块中的matplotlibflower,我通过运行我的代码在本地打包

^{pr2}$

在将代码导出到android设备之前。在

有没有办法把它作为一个本地应用程序运行,或者至少通过Kivy启动程序来运行?我已经读到,到目前为止buildozer不支持matplotlib,但它来自一个半年多前未被引用的评论。如果我可以通过直接修改android的python让它运行matplotlib的.apk也可以,尽管我不知道这是如何工作的。在

最后,我尝试下载numpymatplotlib源代码,并将这些模块本地添加到我的包中,这样buildozer就不需要下载/关心它们了,但我不知道这样的大型复杂模块是如何做到的(如果可能的话)。在

这是我想获取.apk的示例代码(从How to get started/use matplotlib in kivy复制):

from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import matplotlib.pyplot as plt

plt.plot([1, 23, 2, 4])
plt.ylabel('some numbers')

class MyApp(App):

    def build(self):
        box = BoxLayout()
        box.add_widget(FigureCanvasKivyAgg(plt.gcf()))
        return box

MyApp().run()

Tags: 模块答案代码fromimport脚本box应用程序

热门问题