1.termux簡介
?1.1 簡介
termux是安卓手機(jī)上的一款軟件,相當(dāng)于在安卓上搭建了一個Linux平臺,所以在Linux上能干的事情很多在手機(jī)上也都辦得到,比如本文就是介紹與python相關(guān)的內(nèi)容。
實(shí)際上,得益于安卓平臺的開放性罕容,類似termux的手機(jī)神器著實(shí)不少。不說各類強(qiáng)大的編程IDE稿饰,單是termux這樣的Linux平臺類軟件就很多锦秒,如GnuRoot系列,LinuxDisplay系列等喉镰。這其中termux很受人歡迎旅择,對于我來說,其主要優(yōu)點(diǎn)一是體積小侣姆,二是不需要root生真,三是網(wǎng)上能找到很多相關(guān)資源。
除了termux之外捺宗,它還有一大群兄弟姐妹們(各種插件)可供大家挑選使用柱蟀,如下所示。
1.2下載
官方給出了兩個地址蚜厉,一是Google Play长已,二是Fiord。
這兩個地方略有區(qū)別昼牛,安裝包的簽名是不同的术瓮。所以如果要和termux家族的其他軟件聯(lián)合使用的話,最好在同一個來源下載贰健。其次在Google play有些額外的軟件是付費(fèi)應(yīng)用胞四,而上可以免費(fèi)下載。
?1.3 termux 初體驗(yàn)
打開termux后的界面如下伶椿,包括兩部分辜伟。
1. 第一部分是termux官方網(wǎng)站和相關(guān)資源氓侧,實(shí)際上還有Github和Google Group。有啥問題到這些地方可以找到答案游昼,像github和官方wiki就有很多資源可供進(jìn)一步學(xué)習(xí)甘苍。
2. 第二部分介紹了個包管理器命令pkg尝蠕,給出了四個命令烘豌。最后的help是通用的,前面分別是搜索/安裝/升級包看彼。我理解跟linux的apt/apt-get, python的pip差不多廊佩,實(shí)際上直接用apt命令也可以的。
?2 安裝python模塊
我們開始在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也可以,不過這次一開始我用apt報錯了娜膘。
?2.2 安裝科學(xué)計算包
作為愛學(xué)習(xí)的孩子逊脯,我們用python當(dāng)然要搞一搞當(dāng)前最熱門的數(shù)據(jù)分析跟機(jī)器學(xué)習(xí)了。
?2.2.1 jupyter, numpy竣贪,matplotlib和pandas
方法來自這篇文章:Running Jupyter and the Scipy stack on Android
1. 安裝這四個包军洼,首先安裝下依賴。
apt install python python-dev clang fftw libzmq libzmq-dev freetype freetype-dev libpng libpng-dev pkg-config
2. 正式安裝包
這四個包安裝方法類似演怎,不過實(shí)際中安裝時很多人會踩坑匕争,其中jupyter是最容易安裝的,一般沒問題爷耀。安好了就可以擁有ipython和jupyter notebook兩大神器了甘桑。
LDFLAGS="?-lm?-lcompiler_rt"?pip?install?jupyter
這里pip之前加了東西,看到網(wǎng)上說是鏈接到數(shù)學(xué)庫編譯的意思畏纲。
剩下三個其中numpy是基礎(chǔ)包扇住,是pandas和matplotlib的依賴包,方法類似盗胀。
LDFLAGS="?-lm?-lcompiler_rt"?pip?install?numpy?matplotlib?pandas
Note: 第一次一起安裝艘蹋,結(jié)果matplotlib部分報錯。后來是先裝numpy,再一起裝pandas和matplotlib(termux可以開多個界面)成功了票灰。
ipython和matplotlib
用ipython寫代碼可以使用各種魔法操作女阀,termux里的界面看著也很漂亮宅荤,如下圖所示
不過可以看到里面```import matplotlib.pyplot```報錯了,主要是缺后端繪圖界面支持浸策。命令行作圖確實(shí)也不大現(xiàn)實(shí)冯键。但我們還是可以在手機(jī)上使用matplotlib的,畢竟還有jupyter notebook嘛庸汗。
在jupyter notebook作圖如下:
?2.2.2 安裝numpy惫确,matplotlib可能遇到的問題
numpy,matplotlib可能在安裝時可能會有問題蚯舱,這個跟各個模塊的版本號有關(guān)系改化。
安裝報錯不妨多試幾個版本。就是在最后加上版本號信息諸如``pip install numpy==1.12.1```? ```pip install matplotlib==1.2.0```
當(dāng)然如果你還要一起安裝下面兩個模塊的話枉昏,還可以有別的解決方法陈肛。
?2.2.3 安裝scipy和scikit-learn
這里安裝后一個scikit-learn需要先安裝scipy。安裝時要用到gcc來編譯兄裂,不過從某版本開始termux官方版把gcc去除了句旱。
參照官方wiki和Github的大致安裝方法如下:
1. 安裝curl.?
pkg install curl
2. 命令行輸入以下命令
$?curl?-L?https://its-pointless.github.io/setup-pointless-repo.sh?|?sh
這里安裝了一個叫g(shù)nupg的東西,鏈接到了termux社區(qū)一位貢獻(xiàn)者(its-pointless)編譯的源中晰奖,其中把numpy和scipy都包括進(jìn)去了谈撒。也就是說這倆直接編譯好了,只需要```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)說了港华,就是```pkg install?numpy,?scipy```
4.最后安裝scikit-learn就很簡單了,直接```pip install?scikit-learn```就行午衰。
?假如前面那個方法按照numpy報錯立宜,可以采用該方法
?2.3 爬蟲模塊安裝
常見的幾個比如requests,BeautifulSoup4臊岸,lxml橙数,scrapy。
前兩個很簡單帅戒,直接pip安裝就行灯帮。后兩個有一些依賴,而且安裝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)合使用
前面提到有個apk叫termux-task可以用。
按照這個apk應(yīng)用即可瞎访,具體使用方法:
1. Tasker任務(wù)里添加插件>termux:task腻贰,然后添加用termux編寫的腳本了。
2. 腳本放置位置是有要求的扒秸,就是要放到```~/.termux/tasker```文件夾里播演。需要在termux里創(chuàng)建該目錄(如下代碼所示)冀瓦,然后放入腳本就行。
mkdir?-p?.termux/tasker
3. 這個跟文件系統(tǒng)有關(guān)系写烤。比如```~/.termux```.?~?表示?$HOME,?對于termux來說也就是這個路徑?"/data/data/com.termux/files/home".手機(jī)未root時?這個目錄只有termux才有權(quán)限訪問翼闽。
4. 實(shí)際測試時發(fā)現(xiàn),termux中的可執(zhí)行程序開頭必須加上聲明行才可以使用洲炊,不然都是當(dāng)成sh腳本運(yùn)行的感局。比如對于python文件,開頭要加上一行:
#!/data/data/com.termux/files/usr/bin/python
5. python程序中有文件操作時选浑,沒辦法直接寫一個相對路徑蓝厌,寫上絕對路徑是可以的。
比如之前提到的```.termux/tasker```文件夾中的xxx.py古徒,
假如程序中有個寫入文件```data/xxx.csv```,要換成下面的絕對路徑:
/data/data/com.termux/files/home/.termux/tasker/data/xxx.csv
如下圖读恃,為Tasker中添加Termux腳本的界面隧膘,這里添加了一個py腳本,選擇在termux中運(yùn)行
下圖即為腳本執(zhí)行界面