安卓termux折騰手記:安裝python庫(kù)+tasker調(diào)用

1.termux簡(jiǎn)介

?1.1 簡(jiǎn)介

termux是安卓手機(jī)上的一款軟件,相當(dāng)于在安卓上搭建了一個(gè)Linux平臺(tái),所以在Linux上能干的事情很多在手機(jī)上也都辦得到,比如本文就是介紹與python相關(guān)的內(nèi)容。

實(shí)際上,得益于安卓平臺(tái)的開(kāi)放性,類(lèi)似termux的手機(jī)神器著實(shí)不少。不說(shuō)各類(lèi)強(qiáng)大的編程IDE,單是termux這樣的Linux平臺(tái)類(lèi)軟件就很多,如GnuRoot系列,LinuxDisplay系列等。這其中termux很受人歡迎,對(duì)于我來(lái)說(shuō),其主要優(yōu)點(diǎn)一是體積小,二是不需要root,三是網(wǎng)上能找到很多相關(guān)資源。

除了termux之外,它還有一大群兄弟姐妹們(各種插件)可供大家挑選使用,如下所示。

termux插件

1.2下載

官方給出了兩個(gè)地址,一是Google Play,二是Fiord。

這兩個(gè)地方略有區(qū)別,安裝包的簽名是不同的。所以如果要和termux家族的其他軟件聯(lián)合使用的話,最好在同一個(gè)來(lái)源下載。其次在Google play有些額外的軟件是付費(fèi)應(yīng)用,而上可以免費(fèi)下載。

?1.3 termux 初體驗(yàn)

打開(kāi)termux后的界面如下,包括兩部分。

termux首界面

1. 第一部分是termux官方網(wǎng)站和相關(guān)資源,實(shí)際上還有Github和Google Group。有啥問(wèn)題到這些地方可以找到答案,像github和官方wiki就有很多資源可供進(jìn)一步學(xué)習(xí)。

2. 第二部分介紹了個(gè)包管理器命令pkg,給出了四個(gè)命令。最后的help是通用的,前面分別是搜索/安裝/升級(jí)包。我理解跟linux的apt/apt-get, python的pip差不多,實(shí)際上直接用apt命令也可以的。

?2 安裝python模塊

我們開(kāi)始在termux上配置python編程環(huán)境了。

?2.1 安裝python

1. 安裝python前首先更新安裝包

apt?update

apt?upgrade

2. 安裝python,目前模式最新版3.6.4。

python-dev也裝上,主要是有些第三方模塊用得著。假如安裝python2的話,把python改成python2就可以了。

pkg install python, python2

pkg install python-dev, python2-dev

Note:這里用的是pkg,按道理apt也可以,不過(guò)這次一開(kāi)始我用apt報(bào)錯(cuò)了。

?2.2 安裝科學(xué)計(jì)算包

作為愛(ài)學(xué)習(xí)的孩子,我們用python當(dāng)然要搞一搞當(dāng)前最熱門(mén)的數(shù)據(jù)分析跟機(jī)器學(xué)習(xí)了。

?2.2.1 jupyter, numpy,matplotlib和pandas

方法來(lái)自這篇文章:Running Jupyter and the Scipy stack on Android

1. 安裝這四個(gè)包,首先安裝下依賴(lài)。

apt install python python-dev clang fftw libzmq libzmq-dev freetype freetype-dev libpng libpng-dev pkg-config

2. 正式安裝包

這四個(gè)包安裝方法類(lèi)似,不過(guò)實(shí)際中安裝時(shí)很多人會(huì)踩坑,其中jupyter是最容易安裝的,一般沒(méi)問(wèn)題。安好了就可以擁有ipython和jupyter notebook兩大神器了。

LDFLAGS="?-lm?-lcompiler_rt"?pip?install?jupyter

這里pip之前加了東西,看到網(wǎng)上說(shuō)是鏈接到數(shù)學(xué)庫(kù)編譯的意思。

剩下三個(gè)其中numpy是基礎(chǔ)包,是pandas和matplotlib的依賴(lài)包,方法類(lèi)似。

LDFLAGS="?-lm?-lcompiler_rt"?pip?install?numpy?matplotlib?pandas

Note: 第一次一起安裝,結(jié)果matplotlib部分報(bào)錯(cuò)。后來(lái)是先裝numpy,再一起裝pandas和matplotlib(termux可以開(kāi)多個(gè)界面)成功了。

ipython和matplotlib

用ipython寫(xiě)代碼可以使用各種魔法操作,termux里的界面看著也很漂亮,如下圖所示

termux/ipython界面

不過(guò)可以看到里面```import matplotlib.pyplot```報(bào)錯(cuò)了,主要是缺后端繪圖界面支持。命令行作圖確實(shí)也不大現(xiàn)實(shí)。但我們還是可以在手機(jī)上使用matplotlib的,畢竟還有jupyter notebook嘛。

在jupyter notebook作圖如下:


?2.2.2 安裝numpy,matplotlib可能遇到的問(wèn)題

numpy,matplotlib可能在安裝時(shí)可能會(huì)有問(wèn)題,這個(gè)跟各個(gè)模塊的版本號(hào)有關(guān)系。

安裝報(bào)錯(cuò)不妨多試幾個(gè)版本。就是在最后加上版本號(hào)信息諸如``pip install numpy==1.12.1```? ```pip install matplotlib==1.2.0```

當(dāng)然如果你還要一起安裝下面兩個(gè)模塊的話,還可以有別的解決方法。

?2.2.3 安裝scipy和scikit-learn

這里安裝后一個(gè)scikit-learn需要先安裝scipy。安裝時(shí)要用到gcc來(lái)編譯,不過(guò)從某版本開(kāi)始termux官方版把gcc去除了。

參照官方wiki和Github的大致安裝方法如下:

1. 安裝curl.?

pkg install curl

2. 命令行輸入以下命令

$?curl?-L?https://its-pointless.github.io/setup-pointless-repo.sh?|?sh

這里安裝了一個(gè)叫g(shù)nupg的東西,鏈接到了termux社區(qū)一位貢獻(xiàn)者(its-pointless)編譯的源中,其中把numpy和scipy都包括進(jìn)去了。也就是說(shuō)這倆直接編譯好了,只需要```pkg

install numpy, scipy``` 即可。

Github里原話是這樣的

This?script?essentially?installs?gnupg?on?your?device?and?downloads?and?adds?a?public?key?to?your?apt?keychain?ensuring?that?all?subsequent?downloads?are?from?the?same?source.

3. 上面已經(jīng)說(shuō)了,就是```pkg install?numpy,?scipy```

4.最后安裝scikit-learn就很簡(jiǎn)單了,直接```pip install?scikit-learn```就行。

?假如前面那個(gè)方法按照numpy報(bào)錯(cuò),可以采用該方法

?2.3 爬蟲(chóng)模塊安裝

常見(jiàn)的幾個(gè)比如requests,BeautifulSoup4,lxml,scrapy。

前兩個(gè)很簡(jiǎn)單,直接pip安裝就行。后兩個(gè)有一些依賴(lài),而且安裝scrapy前必須要先裝lxml。

?2.3.1 lxml,scrapy安裝

lxml

apt-get install libxml2 libxml2-dev libxslt libxslt-dev

pip install lxml

scrapy

apt?install?python?python-dev?clang?libffi?libffi-dev?openssl?openssl-dev?libxml2?libxml2-dev?libxslt?libxslt-dev

pip?install?scrapy

?3.termux/Tasker聯(lián)合使用

前面提到有個(gè)apk叫termux-task可以用。

按照這個(gè)apk應(yīng)用即可,具體使用方法:

1. Tasker任務(wù)里添加插件>termux:task,然后添加用termux編寫(xiě)的腳本了。

2. 腳本放置位置是有要求的,就是要放到```~/.termux/tasker```文件夾里。需要在termux里創(chuàng)建該目錄(如下代碼所示),然后放入腳本就行。

mkdir?-p?.termux/tasker

3. 這個(gè)跟文件系統(tǒng)有關(guān)系。比如```~/.termux```.?~?表示?$HOME,?對(duì)于termux來(lái)說(shuō)也就是這個(gè)路徑?"/data/data/com.termux/files/home".手機(jī)未root時(shí)?這個(gè)目錄只有termux才有權(quán)限訪問(wèn)。

4. 實(shí)際測(cè)試時(shí)發(fā)現(xiàn),termux中的可執(zhí)行程序開(kāi)頭必須加上聲明行才可以使用,不然都是當(dāng)成sh腳本運(yùn)行的。比如對(duì)于python文件,開(kāi)頭要加上一行:

#!/data/data/com.termux/files/usr/bin/python

5. python程序中有文件操作時(shí),沒(méi)辦法直接寫(xiě)一個(gè)相對(duì)路徑,寫(xiě)上絕對(duì)路徑是可以的。

比如之前提到的```.termux/tasker```文件夾中的xxx.py,

假如程序中有個(gè)寫(xiě)入文件```data/xxx.csv```,要換成下面的絕對(duì)路徑:

/data/data/com.termux/files/home/.termux/tasker/data/xxx.csv

如下圖,為T(mén)asker中添加Termux腳本的界面,這里添加了一個(gè)py腳本,選擇在termux中運(yùn)行

Tasker添加termux腳本

下圖即為腳本執(zhí)行界面

腳本運(yùn)行結(jié)果

4.相關(guān)資源

Termux Wiki

termux in Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,400評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,136評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,714評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,452評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,818評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,997評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,552評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,292評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,510評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,721評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,121評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,429評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,235評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,480評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容