在安卓上使用 python 和 matplotlib
Posted
技术标签:
【中文标题】在安卓上使用 python 和 matplotlib【英文标题】:Using python and matplotlib on android 【发布时间】:2013-08-23 13:49:03 【问题描述】:有没有办法在安卓平板电脑上设置 python 2.7.x + matplotlib 以便你可以运行简单的标准 python 代码?我希望能够运行我在 Linux 桌面上运行的相同脚本。仅供我自己使用,我不需要将代码分发给其他任何人。
作为一个具体的例子,是否可以运行这个脚本?
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
【问题讨论】:
有一个类似的话题:***.com/questions/13793158/… 【参考方案1】:容易吗,不。
可以吗?是的。我相信熟练的 Python / android 开发人员可以在 2 到 8 小时内完成。这是一个罕见且复杂的请求。
为什么我认为可以做到?本示例:http://matplotlib.org/examples/pylab_examples/webapp_demo.html
使用不同的库,并且没有对没有实时硬件的数据进行抽象,这个示例向我展示了 SL4A 可以制作基于 Web 的图形: http://www.smartphonedaq.com/android-python-ecg.page
现在,如果您说的是 Android 中的原生 GUI 图形 - 那么我过于关注使用 SL4A 发布的网络方法;)
【讨论】:
【参考方案2】:Pydroid 非常适合 Android 上的 Matplotlib,支持 Numpy 和许多其他库:
Pydroid 用于 Python 2.7
Pydroid 3 用于 Python 3.6
【讨论】:
【参考方案3】:有一个名为 Gnuroot 的应用程序允许您运行一种 chroot (proot),您可以在其中安装 linux 发行版,例如 debian、archlinux... 对于 gui,可以选择为 X 服务器运行 vncserver 并使用一些 android vnc 客户端应用程序来显示屏幕。
我使用非 gui 版本的 gnuroot,它运行良好。我现在在 android lollipop arm 上有一个命令行 debian wheezy。我想念的一件小事是 armhf(我的 nexus7 的处理器可以做的硬件浮点)支持而不是 armel(软件浮点)。
【讨论】:
【参考方案4】:是的,即使没有 root 也可以这样做。您需要termux
应用程序,它基本上是一个具有完整Linux 环境的终端模拟器,通过apt install python
,例如,您可以安装python
。
主网页是here,当然可以通过标准市场获得。 (termux wiki 是一个有用的地方。)
【讨论】:
【参考方案5】:听说过qpython吗? http://qpython.com/ 我个人从未使用过它,但我的同事用它很方便 所以你可能想看看那个
【讨论】:
我不认为它支持 matplotlib 是吗? 也许是这个? qpython.org/question/62/… 或查看常见问题解答 链接失效,archived version here【参考方案6】:我在某处读到 scipy 和 matplotlib 无法为 android 编译,但有人为 numpy 编译过
https://code.google.com/p/android-scripting/issues/detail?id=260
【讨论】:
【参考方案7】:您可以设置一个便宜的服务器(Raspberry Pi?)并创建一个到它的 ssh 连接,以通过 vnc 查看器 android 应用程序或 shell 访问完整的 python 功能
【讨论】:
【参考方案8】:你可以试试MathSys。它是 Python 的包装器,里面有 matplotlib。
不幸的是,MathSys 相当复杂,而且它是一个 alpha 版本。显然,没有人在开发测试版。您需要在外部文件中编写任何复杂的代码。 import
在 MathSys 中运行良好。
【讨论】:
【参考方案9】:这是代码,如您所说,在安装 GNURoot Debian 后可以使用。只是一个细节:我的图表直接导出到.png
文件中:
from pylab import *
import matplotlib.pyplot as plt
plt.switch_backend('agg')
x = linspace(-5, 5, 100)
y = sin(x)
plot(x, y)
out_png = 'out_file.png'
plt.savefig(out_png, dpi=150)
【讨论】:
【参考方案10】:这个帖子有很多不正确的信息!我首先尝试了 Termux,使用来自该线程的信息: How do I install Jupyter notebook on an Android device? 但无法让我终生下载 Matplotlib。错误消息表明我需要安装***,我确实这样做了,但安装崩溃只是被推迟了。我并不是说不可能在 Galaxy Tab A 上从 Termux 安装 Matplotlib,但我做不到。 另一方面,下载 Pyroid3 很简单,安装 numpy、scipy 和 matplotlib 也是如此。所以这是我的建议,基于这样做的成功。
【讨论】:
【参考方案11】: 在 Google 上搜索 numpy android
后,我发现了一个非常不错的 library。我想这可能会有所帮助。
上面的链接不再有效。请查找有关图书馆的更多信息here。
【讨论】:
链接似乎死了。【参考方案12】:我刚刚自己运行了这个,这些是我使用的步骤:
-
安装 termux(从 Play 商店或 FDroid)
在 termux 中安装 python:
pkg install python
-
install matplotlib
为matplotlib安装图形环境(我安装了tkinter):
pkg install python-tkinter
-
install an X server
(我使用了 XServer XSDL)
在你的 python 中使用这个初始化序列:
import os
from time import sleep
os.environ["MPLBACKEND"] = "TkAgg"
os.environ["DISPLAY"] = ":0.0"
print('Loading X server...')
os.system("am start --user 0 -n x.org.server/.RunFromOtherApp 2>/dev/null")
os.environ["DISPLAY"] = ":0.0"
sleep(8) # give the X server an opportunity to start
print('Done')
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
plt.show()
可能有更好的方法来检测 X 服务器是否已经在运行,这样您就不必每次都启动它,但我还没有想出如何去做。
【讨论】:
【参考方案13】:使用 linux shell,我在手机上安装了 git python 和 pip。我在 play store 中使用了 gnuroot.. 你可以从那里 apt-get install python pip
【讨论】:
答案很不清楚。您可以对其进行编辑并至少使用格式来清楚地区分commands
和普通words
(虽然可能会稍微清理一下语法?):***.com/help/how-to-answer
使用 linux shell?我认为在 Linux 上它已经在运行,但在 Android 上没有以上是关于在安卓上使用 python 和 matplotlib的主要内容,如果未能解决你的问题,请参考以下文章