Jupyter與PyCharm完美融合,Jupytext


 

Jupyter Notebook 哪不行?

 

Jupyter Notebook 是一款免費、開源的交互式 web 工具。研究人員可以利用該工具將軟件代碼、計算輸出、解釋文本和多媒體資源組合在一個文檔中。筆記本形式的計算已經發展了幾十年,但是過去幾年里,Jupyter 特別受歡迎,更是成為數據科學家和機器學習研究者們的首選工具。

 

在 GitHub 的一項分析中(Nature,30 OCTOBER 2018)顯示,截至 2018 年 9 月,公開的 Jupyter Notebook 已經超過了 250 萬份,而 2015 年這一數字僅為 20 萬左右。Jupyter Notebook 之所以這么流行,主要還是它的演示和可視化,我們可以查看每一段代碼的輸出與運行效果。

 

這種可視化對於數據科學和機器學習研究而言非常重要,因為我們需要當前的模型特性做決策。此外,正因為這種直觀的可視化輸出,我們經常使用它作為模型教程,Colab 這種提供免費 GPU 算力的平台也都采用的是 Jupyter Notebook。

 

因此總的而言,Jupyter 的主要特點是:

 

  • 行內代碼執行

  • 簡單的構思結構

  • 對圖片和數據幀的良好展示

 

但是,Jupyter Notebook 也有不好的地方,我們很難用它做版本控制,也很難用於工程實踐。其中比較重要的是版本控制,Jupyter Notebook 采用的是 JSON 結構,可讀性比較差。而版本控制能讓我們發覺潛在的優秀代碼,我們可以關注代碼的變化而挖掘到底哪些是重要的。

 

直到現在,版本控制和 Jupyter Notebook 都是兩個世界的人,它們之間基本沒有啥關系。雖然也有一些工作嘗試結合兩者,但成果非常有限,對開發者的使用而言也不友好。

 

Jupytext 來啦

 

現在,Jupytext 來啦,我們可以把 Jupyter Notebook 代碼轉化成純文本,用我們最喜歡的 IDE 打開。重要的是,Jupytext 能清楚地查看代碼的修改記錄,從而更好地進行版本控制,這是以前 Jupyter Notebook 所做不到的。這樣的 Jupytext 是不是就是你苦苦追尋的工具? 

</*視頻*/>

在上面的視頻中,項目作者展示了如何快速使用 Jupytext,我們可以使用最喜歡的純文本編輯器或 IDE 來編輯 Jupyter Notebook。這樣子,Jupyter Notebook 也能有快飛一般的編寫速度了,因為不論是代碼導航、編輯或執行代碼單元、debug 代碼等等,IDE 都要便捷一些。 

當然,如果要使用其它 IDE,Jupyter Notebook 的格式還是要轉換的。目前 Jupytext 能將 Jupyter Notebook 轉換為一下一些格式:

 

  • Markdown 和 R Markdown 文檔

  • Julia、Python、R、Bash、Scheme、Clojure、Matlab、Octave、C++ 和 q/kdb+ 腳本

 

如果我們將 Jupyter Notebook 保存為 Python 腳本,那么就可以將 Python 文件導入 Git 倉庫,並追蹤代碼的修改和變化。有意思的是,Python 代碼的修改是在 Jupyter Notebook 中完成的,這在以前是無法直接追蹤的。

 

更有意思的是,如果我們需要使用 IDE 重構代碼或其它操作,那么可以直接在 PyCharm 中編輯並保存 Python 文件。在刷新 Notebook 后,我們可以繼續在 Jupyter 上便捷更新后的代碼。相當於,Jupyter 和 PyCharm 聯合便捷了~

 

Jupytext 使用姿勢

 

Jupytext 的安裝非常簡單,用 pip 或 conda 直接安裝就行了。此外,我們有多種方式使用 Jupytext,以下簡要展示了幾種方式以及使用界面。

 

直接在 Jupyter Notebook 或 JupyterLab 中使用:Jupytext 提供內容管理器,允許 Jupyter 將 notebook 保存為你喜歡的格式,來補充或替代傳統的.ipynb 文件。你可以在自己喜歡的編輯器中邊界文本表示。編輯完成后,在 Jupyter 中刷新 notebook 即可:輸入單元加載自文本文件,輸出單元重新加載自.ipynb 文件。「刷新」這個動作會保存內核變量,這樣你就可以無需重新運行 notebook,在 notebook 中繼續工作、運行修改后的單元。

 

在命令行中使用:Jupytext 將 Jupyter notebook 轉換為文本表示。命令行工具可以多種方式在 notebook 上運行。它可以同步處理 notebook 的多個表示,將 notebook 輸送至 black 等重新格式化工具中。如果你想在提交.ipynb 文件時自動更新文本表示,它還可以作為 pre-commit hook 使用。

 

在 Vim 中使用:編輯你的 Jupyter notebook,使用 jupytext.vim 將其表示為 Markdown 文檔或 Python 腳本。

 

Jupyter Notebook 中的 Jupytext 菜單是這樣的:

 

 

 

 

在 JupyterLab 中以 Notebook 形式打開 MarkDown 腳本是這個樣子的:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM