簡體   English   中英

在 android 上使用 python 和 matplotlib

[英]Using python and matplotlib on android

有沒有辦法在 android 平板電腦上設置 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)

容易嗎,不。

可以做到嗎? 是的。 我相信一個熟練的 Python/Android 開發人員可以在 2 到 8 個小時的努力中完成。這是一個罕見而復雜的請求。

為什么我認為可以做到? 此示例: http : //matplotlib.org/examples/pylab_examples/webapp_demo.html

使用不同的庫,並且沒有對沒有實時硬件的數據進行抽象,這個示例向我展示了 SL4A 可以做基於網絡的圖形: http ://www.smartphonedaq.com/android-python-ecg.page

現在,如果您在談論 Android 中的本機 GUI 圖形 - 那么我過多地關注使用 SL4A 發布的 Web 方法;)

Pydroid 非常適合 Android 上的 Matplotlib,支持 Numpy 和許多其他庫:

適用於 Python 2.7 的Pydroid

適用於 Python 3.6 的Pydroid 3

有一個名為 Gnuroot 的應用程序,它允許您運行某種 chroot (proot),您可以在其中安裝 linux 發行版,例如 debian、archlinux...
對於 gui,可以選擇為 X 服務器運行 vncserver 並使用一些 android vnc 客戶端應用程序來顯示屏幕。

我使用非 gui 版本的 gnuroot,它運行良好。 我現在在 android 棒棒糖臂上有一個命令行 debian wheezy。 我想念的一件小事是 armhf(我的 nexus7 的處理器可以做的硬件浮點數)支持而不是 armel(軟件浮點數)。

是的,即使沒有root也可以做到。 您需要termux應用程序,它基本上是一個具有完整 Linux 環境的終端模擬器,並且通過apt install python ,例如,您可以安裝python

主網頁在這里,當然可以通過標准市場獲得。 termux wiki是一個有用的地方。)

聽說過 qpython 嗎? http://qpython.com/我個人從來沒有用過它,但我的同事用它很方便,所以你可能想看看

我在某處讀到 scipy 和 matplotlib 不能為 android 編譯,不過有人為 numpy 做了

https://code.google.com/p/android-scripting/issues/detail?id=260

您可以設置一個便宜的服務器(Raspberry Pi?)並創建一個到它的 ssh 連接,以通過 vnc 查看器 android 應用程序或 shell 訪問完整的 python 功能

你可以試試MathSys 它是 Python 的包裝器,里面有 matplotlib。

不幸的是,MathSys 相當復雜,而且它是一個 alpha 版本。 顯然,沒有人在開發測試版。 您需要在外部文件中編寫任何復雜的代碼。 import在 MathSys 中工作正常。

在 Google 上搜索numpy android ,我發現了一個非常好的library 我想它可能會有所幫助。

這是代碼,如您所說,在安裝 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)

這個帖子里有很多不正確的信息! 我首先嘗試了 Termux,使用來自這個線程的信息: How do I install Jupyter notebook on an Android device? 但我一生都無法下載 Matplotlib。 錯誤消息表明我需要安裝輪子,我做到了,但安裝崩潰只是推遲了。 我並不是說不可能在 Galaxy Tab A 上從 Termux 安裝 Matplotlib,但我不能這樣做。 另一方面,下載 Pyroid3 很簡單,安裝 numpy、scipy 和 matplotlib 也是如此。 這就是我的建議,基於這樣做的成功。

我剛剛為自己運行了這個,這些是我使用的步驟:

  1. 安裝 termux(來自 Play 商店或 FDroid)
  2. 在 termux 中安裝 python:
pkg install python
  1. 安裝 matplotlib
  2. 為 matplotlib 安裝圖形環境(我安裝了 tkinter):
pkg install python-tkinter
  1. 安裝 X 服務器(我使用 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 服務器是否已經在運行,這樣您就不必每次都啟動它,但我還沒有想出如何去做。

使用 linux shell,我在手機上安裝了 git python 和 pip。 我在 Play 商店中使用了 gnuroot .. 你可以從那里 apt-get install python pip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM