【问题标题】:Using python and matplotlib on android在安卓上使用 python 和 matplotlib
【发布时间】: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)

【问题讨论】:

标签: android python matplotlib tablet pydroid


【解决方案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/ 我个人从未使用过它,但我的同事用它很方便 所以你可能想看看那个

          【讨论】:

          【解决方案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】:

                    我刚刚自己运行了这个,这些是我使用的步骤:

                    1. 安装 termux(从 Play 商店或 FDroid)
                    2. 在 termux 中安装 python:
                    pkg install python
                    
                    1. install matplotlib
                    2. 为matplotlib安装图形环境(我安装了tkinter):
                    pkg install python-tkinter
                    
                    1. install an X server (我使用了 XServer XSDL)
                    2. 在你的 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(虽然可能会稍微清理一下语法?):stackoverflow.com/help/how-to-answer
                      • 使用 linux shell?我认为在 Linux 上它已经在运行,但在 Android 上没有
                      猜你喜欢
                      • 2014-10-22
                      • 2017-03-29
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-08-10
                      • 2012-05-10
                      • 2017-11-03
                      • 1970-01-01
                      • 2014-02-28
                      相关资源
                      最近更新 更多