對 Python 開發者而言,IPython 仍然是 Jupyter Notebook 的核心
最近剛剛寫過我為什麼覺得覺得 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
關聯到了一個可以在任何時候直接跳轉的快捷方式上。
![Screenshot of commands from JupyterLab](/data/attachment/album/201907/06/131754rryf8hnvjv08f832.png "Screenshot of commands from JupyterLab")
%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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive