Jupyter与PyCharm不可兼得?Jupytext就是你需要的!
點擊“小詹學(xué)Python”,選擇“置頂”公眾號
重磅干貨,第一時間送達
本文轉(zhuǎn)載自機器之心,禁二次轉(zhuǎn)載
Jupyter Notebook 真的是讓人又愛又失望,在有的場景下它極其便利,但是在很多大模型或復(fù)雜項目上,它又無能為力。在 Jupytext 這個項目中,作者希望既能利用 Notebook 的可視化優(yōu)勢,同時也能利用純文本編寫優(yōu)勢。可以說,是時候聯(lián)合 Jupyter Notebook 與 PyCharm 了。
Jupytext 項目地址:https://github.com/mwouts/jupytext
Jupyter Notebook 哪不行?
Jupyter Notebook 是一款免費、開源的交互式 web 工具。研究人員可以利用該工具將軟件代碼、計算輸出、解釋文本和多媒體資源組合在一個文檔中。筆記本形式的計算已經(jīng)發(fā)展了幾十年,但是過去幾年里,Jupyter 特別受歡迎,更是成為數(shù)據(jù)科學(xué)家和機器學(xué)習(xí)研究者們的首選工具。
在 GitHub 的一項分析中(Nature,30 OCTOBER 2018)顯示,截至 2018 年 9 月,公開的 Jupyter Notebook 已經(jīng)超過了 250 萬份,而 2015 年這一數(shù)字僅為 20 萬左右。Jupyter Notebook 之所以這么流行,主要還是它的演示和可視化,我們可以查看每一段代碼的輸出與運行效果。
這種可視化對于數(shù)據(jù)科學(xué)和機器學(xué)習(xí)研究而言非常重要,因為我們需要當(dāng)前的模型特性做決策。此外,正因為這種直觀的可視化輸出,我們經(jīng)常使用它作為模型教程,Colab 這種提供免費 GPU 算力的平臺也都采用的是 Jupyter Notebook。
因此總的而言,Jupyter 的主要特點是:
行內(nèi)代碼執(zhí)行
簡單的構(gòu)思結(jié)構(gòu)
對圖片和數(shù)據(jù)幀的良好展示
但是,Jupyter Notebook 也有不好的地方,我們很難用它做版本控制,也很難用于工程實踐。其中比較重要的是版本控制,Jupyter Notebook 采用的是 JSON 結(jié)構(gòu),可讀性比較差。而版本控制能讓我們發(fā)覺潛在的優(yōu)秀代碼,我們可以關(guān)注代碼的變化而挖掘到底哪些是重要的。
直到現(xiàn)在,版本控制和 Jupyter Notebook 都是兩個世界的人,它們之間基本沒有啥關(guān)系。雖然也有一些工作嘗試結(jié)合兩者,但成果非常有限,對開發(fā)者的使用而言也不友好。
Jupytext 來啦
現(xiàn)在,Jupytext 來啦,我們可以把 Jupyter Notebook 代碼轉(zhuǎn)化成純文本,用我們最喜歡的 IDE 打開。重要的是,Jupytext 能清楚地查看代碼的修改記錄,從而更好地進行版本控制,這是以前 Jupyter Notebook 所做不到的。這樣的 Jupytext 是不是就是你苦苦追尋的工具?
在上面的視頻中,項目作者展示了如何快速使用 Jupytext,我們可以使用最喜歡的純文本編輯器或 IDE 來編輯 Jupyter Notebook。這樣子,Jupyter Notebook 也能有快飛一般的編寫速度了,因為不論是代碼導(dǎo)航、編輯或執(zhí)行代碼單元、debug 代碼等等,IDE 都要便捷一些。
當(dāng)然,如果要使用其它 IDE,Jupyter Notebook 的格式還是要轉(zhuǎn)換的。目前 Jupytext 能將 Jupyter Notebook 轉(zhuǎn)換為一下一些格式:
Markdown 和 R Markdown 文檔
Julia、Python、R、Bash、Scheme、Clojure、Matlab、Octave、C++ 和 q/kdb+ 腳本
如果我們將 Jupyter Notebook 保存為 Python 腳本,那么就可以將 Python 文件導(dǎo)入 Git 倉庫,并追蹤代碼的修改和變化。有意思的是,Python 代碼的修改是在 Jupyter Notebook 中完成的,這在以前是無法直接追蹤的。
更有意思的是,如果我們需要使用 IDE 重構(gòu)代碼或其它操作,那么可以直接在 PyCharm 中編輯并保存 Python 文件。在刷新 Notebook 后,我們可以繼續(xù)在 Jupyter 上便捷更新后的代碼。相當(dāng)于,Jupyter 和 PyCharm 聯(lián)合便捷了~
Jupytext 使用姿勢
Jupytext 的安裝非常簡單,用 pip 或 conda 直接安裝就行了。此外,我們有多種方式使用 Jupytext,以下簡要展示了幾種方式以及使用界面。
直接在 Jupyter Notebook 或 JupyterLab 中使用:Jupytext 提供內(nèi)容管理器,允許 Jupyter 將 notebook 保存為你喜歡的格式,來補充或替代傳統(tǒng)的.ipynb 文件。你可以在自己喜歡的編輯器中邊界文本表示。編輯完成后,在 Jupyter 中刷新 notebook 即可:輸入單元加載自文本文件,輸出單元重新加載自.ipynb 文件。「刷新」這個動作會保存內(nèi)核變量,這樣你就可以無需重新運行 notebook,在 notebook 中繼續(xù)工作、運行修改后的單元。
在命令行中使用:Jupytext 將 Jupyter notebook 轉(zhuǎn)換為文本表示。命令行工具可以多種方式在 notebook 上運行。它可以同步處理 notebook 的多個表示,將 notebook 輸送至 black 等重新格式化工具中。如果你想在提交.ipynb 文件時自動更新文本表示,它還可以作為 pre-commit hook 使用。
在 Vim 中使用:編輯你的 Jupyter notebook,使用 jupytext.vim 將其表示為 Markdown 文檔或 Python 腳本。
Jupyter Notebook 中的 Jupytext 菜單是這樣的:
在 JupyterLab 中以 Notebook 形式打開 MarkDown 腳本是這個樣子的:
推薦閱讀:
數(shù)據(jù)結(jié)構(gòu)之動態(tài)規(guī)劃問題
互動主題:
分享一下你使用的編輯器及原因!
掃碼關(guān)注:
總結(jié)
以上是生活随笔為你收集整理的Jupyter与PyCharm不可兼得?Jupytext就是你需要的!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面经系列 | Python,数据结构,神
- 下一篇: 华为程序员面试要改:网上编程 90 分钟