您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何用iPad運行Python代碼,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。其實,不只是iPad,手機也可以。
痛點
我組織過幾次線下編程工作坊,帶著同學們用Python處理數據科學問題。
其中最讓人頭疼的,就是運行環境的安裝。
實事求是地講,參加工作坊之前,我已經做了認真準備。
例如集成環境,選用了對用戶很友好的Anaconda。
代碼在我的Macbook電腦上跑,沒有問題。還拿到學生的Windows 7上跑,也沒有問題。這才上傳到了Github。
在發布的教程文章里,我也已經把安裝軟件包的說明寫得非常詳細。
還針對 Anaconda 這一 Python 運行環境的安裝和運行,專門錄制了視頻。
但是,工作坊現場遇見的問題,依然五花八門。
有的是操作系統。例如你可能用Windows 10。實話實說,我確實沒用過。拿著Surface端詳,連安裝后的Anaconda文件夾都找不到在哪兒。
有的是編碼。不同操作系統,有的默認中文編碼是UTF-8,有的是GBK。同樣一段中文文本,我這里顯示一切正常,你那里就是亂碼。
有的是套件路徑。來參加工作坊前,你可能看過我一些教程,并安裝了 Python 2.7 版本 Anaconda。來到現場,一看需要 Python 3.6 版本,你就又安裝了一份新的。結果執行起來,你根本分不清運行的 Python, pip 命令來自哪一個套件,更搞不清楚軟件包究竟安裝到哪里去了。再加上虛擬環境配置,你就要抓狂了。
還有的,甚至是網絡擁塞問題。因為有時需要現場安裝調用體積龐大的軟件包,幾十臺電腦“預備——齊”一起爭搶有限的Wifi帶寬,后果可想而知。
痛定思痛,我決定改變一下現狀。
目前的教程只提供基礎源代碼。對于許多新手同學來說,是不夠的。
許多同學,就倒在了安裝依賴軟件包的路上,繼而干脆放棄了。
變通的辦法有許多。例如干脆錄制代碼執行視頻給你看。
但是正如我在《MOOC教學,什么最重要?》一文中說過的,學習過程里,反饋最重要。
你需要能運行代碼,并且***時間獲得結果反饋。
在此基礎上,你還得能修改代碼,對比前后執行結果的差別。
我得給你提供一個直接可以運行的環境。
零安裝,自然也就沒了上述煩惱。
這個事兒可能嗎?
我研究了一下,沒問題。
只要你的設備上有個現代化瀏覽器(包括但不限于Google Chrome, Firefox, Safari和Microsoft Edge等)就行。
IE 8.0?
那個不行,趕緊升級吧!
讀到這里,你應該想明白了。因為只挑瀏覽器,不挑操作系統,所以別說你用Windows 10,你就是用iPad,都能運行代碼。
嘗試
請你打開瀏覽器,輸入這個鏈接(http://t.cn/R35fElv)。
看看會發生什么?
我這里用iPad給你演示。
一開始會有個啟動界面出來。請你稍等10幾秒鐘。
然后,你就能看到熟悉的Python代碼運行界面了。
這個界面來自 Jupyter Lab。
你可以將它理解為 Jupyter Notebook 的增強版,它具備以下特征:
代碼單元直接鼠標拖動;
一個瀏覽器標簽,可打開多個Notebook,而且分別使用不同的Kernel;
提供實時渲染的Markdown編輯器;
完整的文件瀏覽器;
CSV數據文件快速瀏覽
……
圖中左側分欄,是工作目錄下的全部文件。
右側打開的,是咱們要使用的ipynb文件。
為了證明這不是逗你玩兒,請你點擊右側代碼上方工具欄的運行按鈕。
點擊一下,就會運行出當前所在代碼單元的結果。
不斷點擊下來,你可以看見,結果都被正常渲染。
連圖像也能正常顯示。
甚至連下面這種需要一定運算量的可視化結果,都沒問題。
為了證明這不是變魔術,你可以在新的單元格,寫一行輸出語句。
就讓Python輸出你的名字吧。
假如你叫 Chuck,就這樣寫:
print("Hello, Chuck!")
把它替換成你自己的姓名,看看輸出結果是否正確?
其實,又何止是iPad而已?
你如果足夠勇(sang) 于(xin) 嘗(bing) 試(kuang),手機其實也是可以的。
就像這樣。
流程
下面我給你講講,這種效果是怎么做出來的。
我們需要用到一款工具,叫做 mybinder 。它可以幫助我們,把 github 上的某個代碼倉庫(repo),快速轉換成為一個可運行的環境。
注意 mybinder 為我們提供了云設施,也就是計算資源和存儲資源。因此即便許許多多的用戶同時在線使用同一份代碼轉換出來的環境,也不會互相沖突。
我們先來看看,怎么準備一個可供 mybinder 順利轉換的代碼倉庫。
我為你提供的樣例在這里(http://t.cn/R35MEqk):
順便說一句,這個樣例來自于我的數據科學系列教程之《如何用Python處理自然語言?(Spacy與Word Embedding)》。感興趣的同學可以點擊鏈接,查看原文。
在該 GitHub 頁面展示的文件列表中,你需要注意以下3個文件:
demo.ipynb
environment.yml
postBuild
其中demo.ipynb就是你在上一節看到的包含源代碼的Jupyter Notebook文件。你需要首先在本地安裝相關軟件包,并且運行測試通過。
如果在你本地運行都有錯誤,放到云上去,想必也難以正常運行。
environment.yml文件非常重要,它來告訴 mybinder ,需要如何為你的代碼運行準備環境。
我們打開看看該文件的內容:
dependencies: - python=3 - pip: - spacy - ipykernel - scipy - numpy - scikit-learn - matplotlib - pandas - thinc
這個文件首先告訴 mybinder ,你的 Python 版本。我們采用的是 3.6 版。所以只需要指定 python=3 即可。mybinder 會自動為你下載安裝***的。
然后這個文件說明需要使用 pip 工具安裝哪些軟件包。我們需要把所有依賴的安裝包都羅列出來。
這就是之前,我總在教程里給你說明的那些準備步驟。
但是這還沒有完,因為 mybinder 只是為你安裝好了一些軟件依賴。
這里還有兩個步驟需要處理:
為了分析語義,我們需要調用預訓練的Word2vec模型,這需要 mybinder 為我們提前下載好。
Jupyter Notebook 打開后,應當使用的 kernel 名稱為 wangshuyi ,這個 kernel 目前還沒有在 Jupyter 里面注冊。我們需要 mybinder 代勞。
為了完成上述兩個步驟,你就需要準備***一個postBuild文件。
它的內容如下:
python -m spacy download en python -m spacy download en_core_web_lg python -m ipykernel install --user --name=wangshuyi
跟它的名字一樣。它是在 mybinder 依據 environment.yml 安裝了依賴組建后,依次執行的命令。如果你的代碼需要其他的命令提供環境支持,也可以放在這里。
至此,你的準備工作就算結束了。
魔法表演正式開始。
請打開 mybinder 的網址(https://mybinder.org/)。
在 “GitHub repo or URL” 一欄,填寫我們的 github 代碼倉庫鏈接,即:
https://github.com/wshuyi/demo-spacy-text-processing
我們希望一進入界面,就自動打開 demo.ipynb ,因此需要在“Path to a notebook file (optional)”一欄填寫demo.ipynb 。
這時,你會發現“Copy the URL below and share your Binder with others:”一欄中,出現了你的代碼運行環境網址。
https://mybinder.org/v2/gh/wshuyi/demo-spacy-text-processing/master?filepath=demo.ipynb
點擊右側的“復制”按鈕保存到你的記事本里面。將來找到你轉換好的運行環境,就全靠它了。
妥善保存地址后,點擊“Launch”按鈕。
根據你的依賴安裝包數量等因素,你需要等待的時間長短不一。但是只有***次構建的時候,需要花一些時間。
以后每一次調用執行,就都會非常快了。
構建完畢后, mybinder 會自動為我們開啟對應的運行環境。
很有成就感吧!
測試一下,能夠正常運行代碼,就證明我們成功了。
但是你會發現,不對啊!
老師你剛才用 iPad 展示的,不是高級版的 Jupyter Lab 嗎?怎么又變成了 Jupyter Notebook 了?
我也想要高級版!
別著急。
看看你目前的鏈接地址:
https://mybinder.org/v2/gh/wshuyi/demo-spacy-text-processing/master?filepath=demo.ipynb
你只需要做個小小的調整,將其中的:
?filepath=
替換為:
?urlpath=lab/tree/
替換后的鏈接為:
https://mybinder.org/v2/gh/wshuyi/demo-spacy-text-processing/master?urlpath=lab/tree/demo.ipynb
把它輸入到瀏覽器,看看出來的結果:
這下沒問題了吧?
原理
你是不是覺得,mybinder 很黑科技?
其實,也不算。
它只是把已有的幾項技術,鏈接了起來。
這大概也算是“積木式創新”的一個實例吧。
我們看看 mybinder 的說明:
可以看到,其中最為關鍵的技術,是用了 docker 。
Docker 是個什么東西呢?
簡單來說,Docker 就是為了不同平臺上,都能夠順利執行同一份代碼的保障工具。
你有些猶疑,這說的不是 Java 嗎?
沒錯,Java 的宣傳口號,就是一次編碼,各處運行。
它利用虛擬機,來保障這種能力。
但是,如果你經常使用 Java 開發出來的工具,就應該了解痛點有哪些了。
至少,你應該對 Java 程序的運行速度,有一些體會。
Docker 不但效率上要強過 Java 虛擬機,而且它支持的編程語言也不僅僅是一種。
至于其他好處,咱們就不展開了。否則聽起來像廣告。
其實,把 github 代碼倉庫轉換為 docker 鏡像(image)的工作,也不是 mybinder 自己來做的。
它調用的,是另外的一個工具,叫做 repo2docker(https://github.com/jupyter/repo2docker) 。
而你的瀏覽器能夠執行 Python 代碼,是因為 Jupyter Notebook (或者Lab)本來就是建立在“瀏覽器/服務器”(Browser / Server, B/S)結構上。
如果你已經在本地計算機安裝過 Anaconda ,那不妨看看本地執行這個語句:
jupyter lab
會出現什么?
對,它開啟了一個服務器,然后打開你的瀏覽器,跟這個服務器通訊。
Jupyter 的這種設計,本身就讓它的擴展極為方便。
無論 Jupyter 服務器是運行在你的本地筆記本上,還是擺在另一個大洲的機房,對你執行 Python 代碼來說,都是沒有本質區別的。
另外,如果你以為 mybinder 只能讓你在瀏覽器上跑 Python 代碼,那就太小瞧它了。
關于如何用iPad運行Python代碼就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。