Jupyter Notebook界面也可以如此炫酷?有人把Notebook玩出了新花樣
深藍(lán)主題、Conda 環(huán)境自由切換、一鍵生成目錄、一鍵隱藏代碼單元……有沒有想過 Jupyter Notebook 還可以這么玩?
對全世界的 Python 高手而言,Jupyter Notebook 是目前最流行的編程環(huán)境,尤其是對那些從事機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的人而言。數(shù)月前我第一次開始認(rèn)真研究機(jī)器學(xué)習(xí)時(shí)發(fā)現(xiàn)了 Jupyter Notebook。剛開始,我因這一切可以在我的瀏覽器中運(yùn)行而感到驚訝和開心。但是,不久后我就失望了,老套的 Jupyter Notebook 的界面非?;A(chǔ),缺乏很多有用的功能。那時(shí)候我就決定去尋找一些 Jupyter Notebook 的黑客技術(shù)。
在這篇文章中,我展示了一些 Jupyter Notebook 的附件/擴(kuò)展,以及一些能夠增強(qiáng) Jupyter Notebook 和提高生產(chǎn)力的命令。簡言之,就是要增強(qiáng)你的 Jupyter Notebook。
如果你按照下面的指示去做,你的 Jupyter Notebook 會(huì)擁有下面這些令人驚嘆的功能(如果你愿意,還能獲得更多):
-
能夠動(dòng)態(tài)切換多個(gè) Conda 環(huán)境,而無需重啟 Jupyter Notebook。
-
一鍵點(diǎn)擊生成目錄(你會(huì)喜歡這個(gè)功能)。
-
一個(gè)很有用的彈出式便簽(這是我最喜歡的功能),無需改變原始筆記本中任何地方就可以把玩、測試你的代碼。
-
代碼單元內(nèi)的代碼折疊。很疑惑為啥這個(gè)不是 Jupyter Notebook 的固有功能。
-
一鍵代碼單元隱藏,這是一個(gè)重要的功能,當(dāng)你需要通過可視化的方式展示數(shù)據(jù)時(shí),人們并不會(huì)關(guān)心你的代碼,而是你的圖表。
-
一個(gè)超級(jí)酷的變量檢查器。
-
用于 Markdown 單元的拼寫檢查器。
-
用于深夜編碼會(huì)話的禪意黑模式(ZenMode)。
-
能夠動(dòng)態(tài)增加常用 python 結(jié)構(gòu)(例如 List comprehension)的 Code Snippets 菜單。
-
最后這個(gè)絕對是最好的功能——舒緩漂亮的深夜藍(lán)配色方案,拯救你的眼睛!
是時(shí)候增強(qiáng)我們的 jupyter notebook 了!
炫酷的深藍(lán)午夜主題
首先,要保證我們的 notebook 有一個(gè)漂亮的黑色主題,這樣我們的眼睛就會(huì)舒服一些。如果你每天要工作很長時(shí)間,那固有的白色背景會(huì)讓你眼睛很難受。無論如何,一旦你換成了黑色,就永遠(yuǎn)不會(huì)想換回來。
使用下面的命令安裝黑色的主題,
# Kill and exit the Notebook server
# Make sure you are in the base conda environment
conda activate base# install jupyterthemes
pip install jupyterthemes
# upgrade to latest version
pip install --upgrade jupyterthemes
主題包安裝和更新好之后,運(yùn)行下面的命令,將原來白色主題的 Jupyter Notebook 換成一款深藍(lán)午夜主題。你的眼睛會(huì)喜歡這款主題的。
# Enable Dark Mode
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T
Conda 環(huán)境自由切換
接下來,看一下我們是否已經(jīng)把 Anaconda 中創(chuàng)建的所有定制環(huán)境作為核心添加在了 Jupyter Notebook 中。這樣我們就能簡單地利用 Kernel 按鈕切換環(huán)境。換核的時(shí)候不需要重啟 notebook。
假設(shè)你的 Anaconda 環(huán)中有兩個(gè)自定義的環(huán)境 my_NLP 和 gym。按照下面的步驟將這些添加到你的 Jupyter Notebook 中。
# Stop and exit your Jupyter Notebook server first
# Activate your environment in the terminal
conda activate my_NLP
# Install the IPython Kernel
pip install ipykernel
# Link your environment with Jupyter
python -m ipykernel install --user --name=my_NLP# Repeat steps for the other environment, gym.
conda activate gym
pip install ipykernel
python -m ipykernel install --user --name=gym
現(xiàn)在打開你的 Jupyter Notebook,找到 kernel 按鈕下的 Change Kernel 選項(xiàng),接下來就是見證奇跡的時(shí)刻:所有的核都被列舉出來了,你可以通過簡單地點(diǎn)擊來激活一個(gè)服務(wù)核。
這便是最新添加的 Kernel 的展現(xiàn)形式。請注意這款舒緩的午夜藍(lán)主題。
其他炫酷功能
關(guān)于我在上面提及的其他炫酷功能,需要安裝一些叫做 nbextensions for Jupyter Notebooks 的東西。
安裝地址:https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
安裝 nbextensions 是很容易的,簡單地遵循下面的步驟就行:
# Stop and exit your Jupyter Notebook server
# Make sure you are in the base environment
conda activate base# Install the nbextensions
pip install jupyter_contrib_nbextensions
# Install the necessary JS and CSS files
jupyter contrib nbextension install --system
啟動(dòng) Jupyter notebook 服務(wù),你可以在起始頁看到第四個(gè)叫做 Nbextensions 的選項(xiàng)。點(diǎn)擊這個(gè)選項(xiàng),然后就可以看到極妙的功能集,這些都是你一直希望在 Jupyter Notebooks 中擁有的。
Nbextensions 標(biāo)簽!
正如你在上面看到的,這個(gè)擴(kuò)展列表十分龐大,甚至第一眼看上去有些嚇人。但并不是所有的都有用,下面是我用到的一些功能:
-
Table of Contents(2):單擊生成整個(gè)筆記本的目錄,不同的 section 都有對應(yīng)的超鏈接。
-
Scratchpad:在我看來絕對是最好的擴(kuò)展了。這是一個(gè)你可以在里面做代碼實(shí)驗(yàn)的獨(dú)立空間,不會(huì)干擾筆記本中的其他部分。
-
Codefolding :代碼折疊,這個(gè)不需要做過多的解釋。
-
Hide Input All:隱藏所有的代碼單元,同時(shí)保持所有的輸出和 markdown 單元可見。如果你要向非技術(shù)人員解釋你的結(jié)果,那么這就會(huì)是一個(gè)很有用的功能。
-
Variable Inspector:將你從調(diào)試的憂傷中拯救出來,這與 Spyder IDE 中的變量檢查窗口有些類似。
-
Spellchecker:對 markdown 單元中的內(nèi)容進(jìn)行拼寫檢查。
-
Zenmode:移除掉屏幕中雜亂無關(guān)的內(nèi)容,以便你能夠聚焦于重要的東西上,例如代碼。
-
Snippets Menu:從 list comprehension 到 pandas 以及它們之間的所有常用代碼片段的一個(gè)很酷的集合。這是最好的部分?你可以修改窗口的小部件來添加你自己的定制片段。
上述列表包含了我常用的擴(kuò)展功能,但是我鼓勵(lì)你去嘗試一下其余的擴(kuò)展功能。一些有意思的功能包括 ScrollDown、table_beautifier 以及 Hinterland。
Snippet 擴(kuò)展和 Table of Contents generation 擴(kuò)展在工作中同時(shí)使用。
Scratchpad 擴(kuò)展