[英]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 方法;)
有一個名為 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 也是如此。 這就是我的建議,基於這樣做的成功。
我剛剛為自己運行了這個,這些是我使用的步驟:
pkg install python
pkg install python-tkinter
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.