我們的 Python 教程代碼已經能夠免安裝在線運行了。但若是你但願在本地克隆運行環境,請參考本文的步驟說明。html
這些日子,我用課餘時間,忙着把本身知識星球的分享文章轉移到語雀平臺,以便於訂閱用戶閱讀和得到即時推送。目前該分享空間已經初具規模。python
回過頭來一看,專欄和微信公衆號後臺,積攢了很多用戶的提問。git
例如這位用戶問:github
爲何我在binder上新建的文件再次打開後就丟失了?瀏覽器
問題來自於個人《如何用iPad運行Python代碼?》一文。安全
我們用 mybinder ,是爲了給讀者們提供一個一致性的代碼運行環境。bash
你能夠免安裝,運行樣例代碼。能夠修改代碼從新運行,甚至能夠上傳數據文件,作本身的分析。微信
我須要補充說明一個重要事項—— mybinder 爲我們提供的 Python 運行環境資源,是共享的,並不是永久獨佔空間。網絡
每一個同窗,打開相同的一個連接後,mybinder 都開啓一個獨立的環境,你們互不干擾。session
可是,Python 環境的運行,是須要後臺的資源支持的。
你每打開一個 mybinder 的連接,後臺都要給你提供對應的 CPU、內存、硬盤等一系列資源。
若是這些資源被大量用戶長期佔用,平臺沒法承受。新的用戶也就沒法再加入使用了。
mybinder 平臺和用戶的約定,是若是你超過十分鐘「不活躍」(inactivity),系統就會關閉你的會話(session),以回收資源,服務更多有須要的用戶。
你運行結束關閉瀏覽器,超過10分鐘,再用該連接從新訪問,所作的改動天然就都不見了。
也正因如此,我纔在教程的末尾,爲你提供了源代碼的 github repo 地址。
你能夠選擇在本身的機器上,克隆教程 Python 運行環境。
哪些狀況下,你會須要在本地克隆 Python 運行環境呢?
若是你的數據比較大,或者安全性要求較高,上傳到雲端不方便;
若是你怕由於網絡穩定性的緣由,致使代碼運行中途網絡出現問題,前功盡棄;
若是你運行的深度學習模型,須要 GPU 或者大容量內存的支持……
遇到上述狀況,沒關係。
下面我給你介紹如何使用 pipenv ,方便地克隆教程指定的 Python 運行環境,在本地運行 Jupyter Notebook。
我們以《如何用 Python 和 API 收集與分析網絡數據?》這篇文章爲例。
文章結尾部分,我給你提供了對應的 github repo 的代碼地址(t.cn/R3usEti)。
你也能夠直接經過這個連接(t.cn/R3usDi9),直接下載包含源代碼與運行環境的壓縮包。
解壓以後,你會看到目錄中包含如下配置相關文件:
其中 environment.yml
和 postBuild
是爲 mybinder 使用的。本地克隆運行環境的時候,你能夠忽略它們。
請注意其中的 Pipenv 文件。
咱們打開 Pipenv 文件,看看內容:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
ipykernel = "*"
plotnine = "*"
requests = "*"
[dev-packages]
[requires]
python_version = "3.6"
複製代碼
其中 requires 區域,說明了本教程使用的環境,是 Python 3.6 版本。
packages 區域,告訴 pipenv ,須要給咱們準備的軟件包都有哪些。
下面咱們看看如何用 pipenv 克隆運行環境。
你須要檢查是否已經安裝了 Anaconda 3。
若是你尚未安裝,請參考我以前爲你製做的這篇教程 《如何安裝Python運行環境Anaconda?(視頻教程)》把它安裝好,而且學習如何在終端進入解壓後的壓縮包。
我把後續的詳細操做步驟,錄了一段視頻,你能夠直接點開這個連接(t.cn/R1cWIWr),播放該視頻。
若是你以前有安裝經驗,也能夠根據下面的文字說明操做。
以後,執行如下語句:
pip install pipenv
複製代碼
這會爲咱們安裝 pipenv 工具,以便處理 Pipfile。
第二步,執行:
pipenv install --skip-lock
複製代碼
這個命令,可讓 Python 根據咱們目前的 Pipenv 配置,自動構建環境,而且從網上把全部須要用到的依賴軟件包,都弄下來,安裝好。
第三步,執行:
pipenv run python -m ipykernel install --user --name=wangshuyi
複製代碼
這條命令,幫你給 Jupyter Notebook ,安裝一個核心組塊,把你剛纔安裝的這些軟件包信息,都放在這個組塊裏。
爲了便於在系列教程中重複使用代碼,我給這個組塊命名爲 wangshuyi。
對於通常的教程源代碼,上述步驟就能夠了。可是由於《如何用 Python 和 API 收集與分析網絡數據?》這篇文章,涉及到繪圖,並且裏面出現中文顯示。
咱們須要進行一些處理,以便讓程序順利運行,保證中文字符正常顯示。
方法是執行下面這條語句:
pipenv run python handle_matplotlib_chinese.py
複製代碼
最後一步,開啓 Jupyter Notebook :
jupyter notebook
複製代碼
這時候,你就能夠看到熟悉的 Jupyter Notebook 界面了。
注意這個示例代碼中,須要你輸入本身的 AppCode,因此你須要把其中的「Your AppCode here」字樣,替換爲你本身的 AppCode值。不然下面的運行會報錯。
替換以後,點擊菜單欄中的「Cell」,選擇「Run All」,看可否正常運行所有代碼,而且顯示分析結果圖形。
若是一切正常,意味着你的 Python 運行環境克隆工做順利完成。
祝賀你!
有讀者留言詢問,爲何用了兩套不一樣的虛擬軟件包管理工具。
由於很遺憾,本文寫做時, mybinder 還不支持 Pipfile 配置文件。
其實,咱們這裏用到的 Pipfile ,不是 pipenv 這個軟件專用的配置文件格式。
它是將來 Python 軟件包管理工具 pip 的官方指定配置文件格式。
在將來,若是你用 pip 安裝軟件,就要跟 Pipfile 打交道。
不過,Python 開源社區的不少舉動,進展都很緩慢。
例如 Python 3,已經出來這麼久了, Python 2 尚未退休呢。
pip 這種底層的包管理方式,哪是一兩天就能發生根本改變的?
pipenv 出現,是由於人們不想等了。
如今,就是如今,咱們要用最符合人性的 Python 軟件包管理工具。
使用 pipenv,好處有不少。
僅舉一例,用 pipenv ,你能夠用一條命令,查看當前項目軟件包之間的依賴關係。
感受怎麼樣?
若是你對 pipenv 感興趣,想了解它的特性、演進過程,請點擊這個連接(t.cn/R1cYQSU),查看 PyCon 2018 大會上 Kenneth Reitz 的講解。
Kenneth Reitz 是誰?
若是你讀過個人《如何用 Python 和 API 收集與分析網絡數據?》一文,你已經用過他的做品了。
對,「給人用的」 (for humans) HTTP 工具,requests,就是他寫的。
你更喜歡在 mybinder 直接在線運行 Python 教程代碼,仍是喜歡在本地克隆一個完整的運行環境呢?爲何?歡迎留言,把你的經驗和思考分享給你們,咱們一塊兒交流討論。
喜歡請點贊。還能夠微信關注和置頂個人公衆號「玉樹芝蘭」(nkwangshuyi)。
若是你對數據科學感興趣,不妨閱讀個人系列教程索引貼《如何高效入門數據科學?》,裏面還有更多的有趣問題及解法。