如何用 Google Colab 練 Python?

自動配置、有效求助、協作編程、版本控制。一站式解決 Python 新手練習中的痛點。

痛點

這個學期,我在北得克薩斯大學(University of North Texas)教 INFO 5731: Computational Methods for Information Systems 課程,主要內容包括: Python 基礎、自然語言處理,以及機器學習。

授課的對象是信息科學、數據科學專業的碩士與博士研究生。跟在國內一樣,我依然使用翻轉教學(flipped instruction)方式。

過去的幾周,我們把“Python 基礎”部分學完了。

每周,我都會要求學生閱讀兩本教材上的指定章節,然后把所有的代碼自己重復一遍。在此基礎上,對每一段代碼,學生都要自己試著進行一些改動。出錯也沒有關系,嘗試解決。

因為絕大部分學生,都是 Python 初學者。因此他們都會遇到以下的實際問題。

一、不知道如何安裝和設置運行環境;

二、遇到問題會慌亂,不知如何有效尋找解決方法;

三、對于團隊作業,不知該如何有效協作;

四、不懂得如何進行版本控制,代碼越改越亂。

這些問題,也構成了學生的痛點。

如果不能有效加以解決,學生會把每周寶貴的學習時間,浪費到許多瑣碎的無用功上。更可能的情況,是他們的信心會被打擊,導致喪失學習的動力和興趣

因此,我為他們找到了一款合適的 Python 練習工具。這里,我把這款工具也分享給你。

這款工具,就是 Google Colab 。我曾經在《如何免費云端運行Python深度學習框架?》一文中為你介紹過它,在《如何用 Python 和循環神經網絡做中文文本分類?》和《如何用 Python 和循環神經網絡預測嚴重交通擁堵?》里,我也曾用它給你做過代碼的展示。

下面,我給你介紹一下,如何用 Google Colab 應對上述的4個痛點,為你的 Python 練習提供輔助。

環境

新手最常見的問題,就是好不容易累積了學習的興趣,上手不久便遇到報錯。

而 Python 新手遇到的許多錯誤,實際上都和環境的配置有關。

例如說,Anaconda 套件下載環節,你就不知道該選擇哪個版本。

好不容易安裝好了,因為路徑設置問題,連 Jupyter Notebook 都呼叫不出來。

終于能輸入代碼了。結果一輸入就提示,你要調用的模塊名稱,沒聽說過!

而這些,Google Colab 都幫你處理好了。

只需要打開一個瀏覽器(推薦 Google Chrome 或者 Firefox),輸入:

https://colab.research.google.com

就可以看到以下頁面。

選擇新建 Python 3 筆記本。

然后,就能看到完全配置好的 Python 運行環境了。

對,就是這么簡單。

你可別小瞧這個運行環境。

雖然你沒有執行任何安裝過程,但是它基本上涵蓋了你做數據科學分析,要用到的各種工具。

這些工具包括但不限于 Numpy, Scipy, Pandas 等,甚至連深度學習的框架,例如 Tensorflow, Keras 和 Pytorch,也是一應俱全。

Google Colab 的深度學習環境支持,可不只是軟件那么簡單。Google 慷慨的提供了 GPU, 甚至是更專業化的 TPU, 供你免費使用。

默認狀態,這些云端硬件是不開啟的。你需要在菜單欄中選擇 runtime,然后選擇 Change runtime type。

就可以看到不同硬件支持的選項了。

有的書籍樣例代碼,甚至是 Python 組件,都需要 Python 2 環境才能運行,這也沒關系。點擊新建筆記本,你就能使用不同的 Python 版本了。

細心的你會發現,在上面“修改運行時設置”頁面里,也可以隨時調整 Python 版本。

求助

作為新手,你遇到錯誤和問題,是完全正常的。

Python 具有強大的社區,可以給你提供很多幫助。

但如果你嘗試過,便可能有一種錯覺——這些 Python 高手很不友好。因為你貼了問題,卻沒人理你。

其實,這很可能是你問問題的方式不對。

想想看,你籠統地說一個報錯信息,可能的原因或許有數十甚至上百種,誰能幫你一一排除?

這倒也罷了。可是你明明貼了一段代碼,還給出了錯誤信息的截圖啊。為什么還是沒有人伸出援手?

因為這些信息,可能依然不夠。

想想看,你本地安裝了什么樣的套件?其中的各種模塊,都分別是什么版本?你執行當前代碼有問題,那上下文是什么?會不會是因為之前某個代碼段落,影響了你當前段落的執行?你的操作系統,是否完全支持你正在使用的組件功能?……

這些可能性,無窮無盡。同樣,也沒有人這樣花時間幫你枚舉。

但是有了 Google Colab ,你提問的效果卻可以大大提升。

因為,你可以用** 最簡單的方法,讓潛在的回答者復現**你的問題。

這就是,把你的筆記本共享出去。

如上圖,點擊筆記本右上角的 Share 按鈕。

在出現的對話框里,注意選擇權限。選成可以瀏覽(view),就可以了。

然后,選擇“復制鏈接”,鏈接就到了你的剪切板里面了。把它連同你的文字描述,直接貼到 Python 的論壇或者課程討論區里。

別人只需要點擊,就能查看你的全部代碼、報錯信息。而且,還能運行你的筆記副本。

注意,雖然你倆可能用的是不同的操作系統、不同的瀏覽器,但因為都用了 Google Colab ,你們的 Python 環境是完全一致的。

等到對方解決了問題,他還可以把完整的筆記本再用鏈接方式分享給你。你的問題于是迎刃而解。

問問題,只是尋求幫助的一個方面。

在提問之前,你還是應該自己嘗試一下解決的。毫不愿意思考,直接當伸手黨,社區里的人很難喜歡跟你打交道。

Google Colab 為你主動尋找問題答案,提供了工具支持。每當你遇到報錯的時候,你都會看到下方有個按鈕。

點擊這個按鈕, Google Colab 就會用搜索引擎,在 Stackoverflow 這個 IT 問答站點上,幫你尋找相關報錯的已有答案。

一般來說,點擊前幾條信息,你就會有收獲。

例如這次,你就很幸運,因為答案明確說明,這是因為 Python 版本帶來的差異。

你只需要根據提示,進行代碼的輕微調整,就能正常運行了。

協作

不知你有沒有嘗試過跟人協作編寫代碼?

我的課上,是有小組作業的。要求學生2-3人一組,一起用 Python 解決問題。

有的人,是這樣協作的。

自己寫一段代碼,用郵件傳給對方。

對方改完,發回來。

自己在上面修改添加,再發回去。

……

這樣顯然效率很低

有沒有高效的方法?

當然有。依然利用我們剛才已經見到過的共享功能。

只是這一次,在選擇權限的時候,給對方“可修改”權限。

例如還是剛才的 print 命令沒有加括號的問題。只不過這次,對方除了能看到你的問題,還可以直接編輯。

你的協作者,新建了一個代碼塊,并且輸入了正確的信息。

在你這里看起來,就是這個樣子的。

協作者的頭像,會顯示在對應的修改內容旁邊。這樣一目了然。

對方還可以在代碼塊旁,選擇添加注釋。

例如輸入以下內容。

你可以同步在自己的筆記本上,看到對方的注釋。

這樣一來,團隊協作 Python 練習溝通的效率,自然就高了許多。

注意,為了安全起見,一定只能把該權限,限定在你信任的協作者中。

如果是打算把你的成果展示出來,你可以使用 Google Colab 與 Github 的集成功能。

如上圖,選擇保存副本到 Github 。

然后,選擇你希望保存到的 Github 項目。

保存完畢后,對應的 Github 頁面會自動打開,供你預覽。

其中可以包含全部的文字、圖片、代碼、輸出信息。注意筆記本的頂部,有一個“在 Colab 打開”的鏈接。

點擊它,你就能迅速開啟 Google Colab 環境,并且直接運行這個 Github 上的筆記副本。

版本

當你不停地嘗試和改動代碼的時候,很有可能會把問題改得更加糟糕。這時候,你恨不得有一個時光機,可以讓你回到錯誤少一點的時候。

這個時光機,Google Colab 是提供了的。

點擊菜單里面的 Revision history 功能,你就能看到當前筆記本已保存的全部歷史版本。

包括修改時間、誰改的、文件大小等各種信息,一應俱全。

想回到哪個版本,點一下“恢復”按鈕就可以了。

另外,你也可以把 Google Colab 筆記本,直接下載成為 ipynb 文件,在本地保存副本。

一定要注意選擇需要的存儲路徑,避免不知存到哪里去了。

我一般讓學生交作業的時候,都需要同時提交 Google Colab 鏈接,以及一個 ipynb 文件。

二者的內容,應該是一樣的。既然如此,為什么還需要提交兩樣東西呢?

這個問題,作為思考題,留給你。請注意聯系本節標題,加以分析。

有了 ipynb 文件,你可以用本地的 Jupyter Notebook 開啟。但是如果你只是想查看內容的話,這里給你推薦一個更好的工具,叫做 nteract 。它可以幫你直接開啟 ipynb 文件,用于查看。

這樣,你就沒必要每次都用 Jupyter Notebook 命令開啟后臺服務,然后再到瀏覽器中點開對應的 ipynb 了。

小結

還記得在《如何高效學 Python ?》一文中,我給你推薦過的經典教材《笨辦法學 Python》吧?

《笨辦法學 Python》指出了一條看似笨拙,卻非常有效的學習路徑。我上課的時候,也一直在跟學生們強調—— Python 這樣的實踐類技能,只能練中學(Learn by doing)。

本文給你推薦的 Google Colab ,可以幫你解決 Python 初學者練習實踐 Python 編程時,最常遇到的幾大痛點。包括:

  • 自動配置
  • 有效求助
  • 協作編程
  • 版本控制

這樣一來,你可以把寶貴的時間,聚焦在技能的掌握和應用;而不是久病成醫,成為“環境配置專家”了。

祝 Python 編程學習愉快!

延伸閱讀

你可能也會對以下話題感興趣。點擊鏈接就可以查看。

喜歡請點贊和打賞。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)

如果你對 Python 與數據科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數據科學?》,里面還有更多的有趣問題及解法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370