Jupyter 專案提供的魔法般的開發體驗很大程度上得益於它的 IPython 基因。
最近剛剛寫過我為什麼覺得覺得 Jupyter 專案(特別是 JupyterLab)提供了一種 魔法般的 Python 開發體驗。在研究這些不同專案之間的關聯的時候,我回顧了一下 Jupyter 最初從 IPython 分支出來的這段歷史。正如 Jupyter 專案的 大拆分™ 宣告 所說:
“如果你不明白 Jupyter 是什麼,這麼說吧,它擁有和 IPython 同樣的程式碼,並且是由同一批人開發的,只不過取了一個新名字、安了一個新家。”
下面這個註腳進一步說明了這一點:
“我從宣告中解讀出來的資訊是,‘Jupyter 和 IPython 非常相似,但是擁有多種語言’,這也可以很好地解釋為什麼這個專案的名字已經不再需要包含 Python,因為當時它已經支援多種語言了。”
我明白 Jupyter Notebook 和 IPython 都是從同樣的原始碼裡分支出來的,但是不太清楚 IPython 專案的現狀。在大拆分™ 之後它是已經不再被需要了,還是在以另一種方式延續著?
後來我驚訝地發現,IPython 仍然不斷在為 Python 使用者提供價值,它正是 Jupyter 體驗的核心部分。下面是 Jupyter 常見問題頁面的一段擷取:
有什麼語言是需要預裝的嗎?
是的,安裝 Jupyter Notebook 會首先安裝 IPython 核心。這樣我們就可以在 notebook 上執行 Python 語言了。
現在我明白了,在 JupyterLab(以及 Jupyter Notebook)上編寫 Python 程式仍然需要依賴 IPython 核心的持續開發。不僅如此,IPython 還充當了最為強大的預設核心的角色,根據 這份文件,它是其它語言核心之間的樞紐,節省了很多開發時間和精力。
現在唯一的問題是,IPython 本身可以做什麼呢?
IPython 如今的作用
IPython 提供了一個強大的、互動性的 Python shell,以及 Jupyter 的核心。安裝完成之後,我可以在任何命令列執行 ipython
本身,將它當作一個(比預設 Python shell 好太多的)Python shell 來使用:
$ ipython
Python 3.7.3 (default, Mar 27 2019, 09:23:15)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numpy as np
In [2]: example = np.array([5, 20, 3, 4, 0, 2, 12])
In [3]: average = np.average(example)
In [4]: print(average)
6.571428571428571
這就讓我們發現了一個更為重要的問題:是 IPython 讓 JupyterLab 可以在專案中執行程式碼,並且支援了一系列被稱為 Magic 的功能(感謝 Nicholas Reith 在我上一篇文章的評論裡提到這點)。
IPython 讓魔法成為現實
JupyterLab 和其它使用 IPython 的前端工具可以讓你感覺像是在最喜歡的 IDE 或者是終端模擬器的環境下工作。我非常喜歡 點檔案 快捷鍵功能,Magic 也有類似點檔案的特徵。比如說,可以試一下 %bookmark 這個命令。我把預設開發資料夾 ~/Develop
關聯到了一個可以在任何時候直接跳轉的快捷方式上。
%bookmark
、%cd
,以及我在前一篇文章裡介紹過的 !
運算子,都是由 IPython 支援的。正如這篇 文件 所說:
Jupyter 使用者你們好:Magic 功能是 IPython 核心提供的專屬功能。一個核心是否支援 Magic 功能是由該核心的開發者針對該核心所決定的。
寫在最後
作為一個好奇的新手,我之前並不是特別確定 IPython 是否仍然和 Jupyter 生態還有任何聯絡。現在我對 IPython 的持續開發有了新的認識和,並且意識到它正是 JupyterLab 強大的使用者體驗的來源。這也是相當有才華的一批貢獻者進行最前沿研究的成果,所以如果你在學術論文中使用到了 Jupyter 專案的話別忘了引用他們。為了方便引用,他們還提供了一個 現成的引文。
如果你在考慮參與哪個開源專案的貢獻的話,一定不要忘了 IPython 哦。記得看看 最新發布說明,在這裡可以找到 Magic 功能的完整列表。
via: https://opensource.com/article/19/6/ipython-still-heart-jupyterlab
作者:Matthew Broberg 選題:lujun9972 譯者:chen-ni 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出