Jupyter 項目提供的魔法般的開發體驗很大程度上得益於它的 IPython 基因。html
最近剛剛寫過我爲何以爲以爲 Jupyter 項目(特別是 JupyterLab)提供了一種 魔法般的 Python 開發體驗。在研究這些不一樣項目之間的關聯的時候,我回顧了一下 Jupyter 最初從 IPython 分支出來的這段歷史。正如 Jupyter 項目的 大拆分™ 聲明 所說:前端
「若是你不明白 Jupyter 是什麼,這麼說吧,它擁有和 IPython 一樣的代碼,而且是由同一批人開發的,只不過取了一個新名字、安了一個新家。」python
下面這個註腳進一步說明了這一點:linux
「我從聲明中解讀出來的信息是,‘Jupyter 和 IPython 很是類似,可是擁有多種語言’,這也能夠很好地解釋爲何這個項目的名字已經再也不須要包含 Python,由於當時它已經支持多種語言了。」git
我明白 Jupyter Notebook 和 IPython 都是從一樣的源代碼裏分支出來的,可是不太清楚 IPython 項目的現狀。在大拆分™ 以後它是已經再也不被須要了,仍是在以另外一種方式延續着?github
後來我驚訝地發現,IPython 仍然不斷在爲 Python 使用者提供價值,它正是 Jupyter 體驗的核心部分。下面是 Jupyter 常見問題頁面的一段截取:shell
有什麼語言是須要預裝的嗎?bash
是的,安裝 Jupyter Notebook 會首先安裝 IPython 內核。這樣咱們就能夠在 notebook 上運行 Python 語言了。工具
如今我明白了,在 JupyterLab(以及 Jupyter Notebook)上編寫 Python 程序仍然須要依賴 IPython 內核的持續開發。不只如此,IPython 還充當了最爲強大的默認內核的角色,根據 這份文檔,它是其它語言內核之間的樞紐,節省了不少開發時間和精力。ui
如今惟一的問題是,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 在我上一篇文章的評論裏提到這點)。
JupyterLab 和其它使用 IPython 的前端工具可讓你感受像是在最喜歡的 IDE 或者是終端模擬器的環境下工做。我很是喜歡 點文件 快捷鍵功能,Magic 也有相似點文件的特徵。好比說,能夠試一下 %bookmark 這個命令。我把默認開發文件夾 ~/Develop
關聯到了一個能夠在任什麼時候候直接跳轉的快捷方式上。
%bookmark
、%cd
,以及我在前一篇文章裏介紹過的 !
操做符,都是由 IPython 支持的。正如這篇 文檔 所說:
Jupyter 用戶大家好:Magic 功能是 IPython 內核提供的專屬功能。一個內核是否支持 Magic 功能是由該內核的開發者針對該內核所決定的。
做爲一個好奇的新手,我以前並非特別肯定 IPython 是否仍然和 Jupyter 生態還有任何聯繫。如今我對 IPython 的持續開發有了新的認識和,而且意識到它正是 JupyterLab 強大的用戶體驗的來源。這也是至關有才華的一批貢獻者進行最前沿研究的成果,因此若是你在學術論文中使用到了 Jupyter 項目的話別忘了引用他們。爲了方便引用,他們還提供了一個 現成的引文。
若是你在考慮參與哪一個開源項目的貢獻的話,必定不要忘了 IPython 哦。記得看看 最新發布說明,在這裏能夠找到 Magic 功能的完整列表。
via: opensource.com/article/19/…
做者:Matthew Broberg 選題:lujun9972 譯者:chen-ni 校對:wxy