Jupyter
如果你是python的初學(xué)者, 非常推薦Jupyter.
Juypter是一個(gè)交互式的編程環(huán)境, 號稱
The Notebook has support for over 40 programming languages,
including Python, R, Julia, and Scala.
支持超過40種語言, 其中包括Python, R, Julia和Scala. 雖然除了Python, 目前提到的其他語言我還都不會(huì), 但是看起來是很強(qiáng)大很有前途的樣子.
Jupyter的編程環(huán)境我很喜歡, 你可以寫一段markdown圖文并茂的說明, 再寫一段代碼, 然后單獨(dú)運(yùn)行剛剛寫過的這一段代碼, 看到結(jié)果, 調(diào)試代碼, 改好以后再進(jìn)行下一段.
最終完成的文本+代碼, 是所謂的"文學(xué)編程", 文字甚至圖片說明作者的思路, 中間夾雜著代碼, 來教導(dǎo)計(jì)算機(jī)進(jìn)行操作. 這樣帶來了完美的可讀性.
!不要! 相信什么"代碼才是最好的注釋".
那是穿格子襯衫背雙肩背半夜三點(diǎn)還在寫代碼的專職程序員才相信的東西.
如果你不是一個(gè)每天必須寫代碼十幾個(gè)小時(shí)的專業(yè)程序員, 而是利用代碼去完成自己專業(yè)的特殊需求, 可能一個(gè)程序要間斷好多天才能寫完, 那么這種方式能夠幫你迅速找到前幾天的思路. 繼續(xù)完成之前的作品.
在本地安裝Jupyter(跳過吧, 別看)
Jupyter當(dāng)然可以安裝在本地, 安裝好Anaconda以后, 相對比較容易安裝jupyter了.
但如果你之前只在windows上安裝過商業(yè)軟件, 一路點(diǎn)next, 或者在mac上從dmg中把應(yīng)用程序直接拖動(dòng)到文件夾里就可以運(yùn)行. 那么安裝anaconda, jupyter, 以及在運(yùn)行jupyter時(shí)再安裝各種python的依賴包, 是非常痛苦的.
完全不建議新手進(jìn)行, 至于那些常年泡在linux里面已經(jīng) "久病成醫(yī) "的病友, 推薦你們試試.
在線的Jupyter
如果你是python的初學(xué)者, 非常推薦使用在線的Jupyter.
利用在線的Jupyter要輕松得多, 只需要有網(wǎng)絡(luò)連接, 有瀏覽器就可以了. 我測試了mac版的Chrome, Safari, 甚至android上的Chrome和iOS上的Safari, Chrome, 都可以運(yùn)行在線的Jupyter.
目前已經(jīng)有這些服務(wù):
Cocalc
https://cocalc.com ,
這是一個(gè)科學(xué)計(jì)算平臺(tái), 除了提供jupyter, 還提供了sagemath.
sagemath也是一個(gè)強(qiáng)大的數(shù)學(xué)計(jì)算工具, 可以當(dāng)作一個(gè)開源的mathematica, 隨手解個(gè)方程, 求個(gè)微分之列都很方便.
CoCalc已經(jīng)安裝好了大量的python包, 比如numpy, tensorflow, keras, pytorch. . .
Cocalc有免費(fèi)版和付費(fèi)版, 免費(fèi)版沒有額外的網(wǎng)絡(luò)連接, 也就是說你無法在cocalc里面再訪問其他網(wǎng)頁, 比如你用jupyter寫了一個(gè)網(wǎng)絡(luò)服務(wù)程序, 那么是無法用在cocalc免費(fèi)版里面的. 用git也會(huì)受限制. 沒有網(wǎng)絡(luò)連接最麻煩的是如果cocalc沒有預(yù)裝的包, 你是無法自行安裝的. 不過如果確實(shí)是很常用有名的python包, 那么可以向cocalc網(wǎng)站的支持發(fā)個(gè)email, 他們的響應(yīng)速度超級快, 很有可能就幫你裝好了.
我寫過CoCalc的使用教程
Azure notebook
https://notebooks.azure.com
這是微軟提供的在線jupyter服務(wù), 財(cái)大氣粗的微軟提供的內(nèi)存, cpu, 存儲(chǔ)空間都不錯(cuò).
很有特色的功能有二:
- 方便一鍵clone, 看好其他人的做得不錯(cuò)的東西, 可以方便clone一份自己研究.
- 可以從github導(dǎo)入, 只需要將看中的github repo頁面添加, 就可以自動(dòng)clone, 如果對方更新了, 自己這邊也可以方便使用git pull
微軟的這個(gè)服務(wù)是有網(wǎng)絡(luò)連接的, 你可以遠(yuǎn)程下載數(shù)據(jù)或者導(dǎo)入其他的庫. 因此如果出現(xiàn)沒有預(yù)裝的庫, 可以自己手動(dòng)安裝. 但麻煩的是, 如果你的notebook停用1小時(shí)以后, 遠(yuǎn)程的server就會(huì)停止, 然后你之前安裝的東西就會(huì)被清除(數(shù)據(jù)和文件不會(huì)), 所以如果有額外的庫, 就需要在每次打開的時(shí)候預(yù)先再次安裝一遍.
好在會(huì)有腳本可以做, 你可以參照這個(gè)帖子
到你的 library > settings > Environment
選擇 ShellScript 然后選擇 特定的腳本
保存
重啟 server
安裝pytorch的腳本例子:
export PATH=~/anaconda3_410/bin:$PATH
conda install pytorch torchvision -c soumith --yes
安裝其他的庫, 只需要在anaconda里面搜索一下conda的安裝方法, 然后替換上面腳本中的conda install pytorch那一段.
其他
Mybinder
https://mybinder.org/
這個(gè)我也還沒用過, 據(jù)說可以從github里面直接導(dǎo)入, 生成一個(gè)docker. 需要什么庫的話, 好像也可以通過腳本預(yù)先聲明, 不一定像azure notebook那樣要反復(fù)安裝.Google Colaboratory
https://colab.research.google.com/
這是Google的jupyter服務(wù), 但目前還沒有完全開放, 點(diǎn)擊注冊以后會(huì)有"您已成功加入到候補(bǔ)名單责循。一旦 Colaboratory 可供您使用狸捕,我們會(huì)立即發(fā)送電子郵件通知您描睦。"
在移動(dòng)設(shè)備上使用
主流的手機(jī)/平板瀏覽器, 上面的服務(wù)都可以訪問, 編輯的時(shí)候稍微有點(diǎn)別扭, 特別是在小屏幕的時(shí)候, 操作也還是不夠方便, 但如果外接鍵盤/藍(lán)牙鍵盤也還是不錯(cuò)的.
除了內(nèi)置的瀏覽器, 我還發(fā)現(xiàn)了專用的iOS app, Juno 目前還處于testflight狀態(tài), 可以去他家網(wǎng)頁上申請beta測試. Juno中還內(nèi)置了Mybinder的demo. 如果你購買了cocalc付費(fèi)版, 也可以開放出一個(gè)遠(yuǎn)程的jupyter server供Juno使用.
自己建立Jupyter在線服務(wù)
開源社區(qū)現(xiàn)在越來越友好了, 有可能的話, 你也可以在自己的服務(wù)器或者VPS上建立一個(gè)在線的Jupyter服務(wù), 為自己/學(xué)生/客戶服務(wù). 但我這么怕麻煩的人, 本地電腦都懶得裝, 所以我都沒有測試過.
Jupyter Hub: https://github.com/jupyterhub/jupyterhub 這是jupyter官方的服務(wù)器安裝程序.
Binder Hub: https://github.com/jupyterhub/binderhub也是從屬與jupyter官方的, 但是用docker技術(shù)封裝, 大概安裝調(diào)試會(huì)方便一些吧.
Cocalc/sagemath: https://github.com/sagemathinc/cocalc 這個(gè)也是用docker的, 還帶有sagemath.
ps.
如果你在本地計(jì)算機(jī)上安裝了jupyter, 非常推薦下面這個(gè)插件, 能夠在保存jupyter文件的時(shí)候, 同時(shí)保存同名的 .html 和 .py 形式的文件. 這樣在其他的python程序中導(dǎo)入自己寫的函數(shù)會(huì)非常方便. 也很容易在github page上發(fā)布文檔.
http://protips.maxmasnick.com/ipython-notebooks-automatically-export-py-and-html
EOF()