Jupyter進化:JupyterLab正式發布
Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
副標題:Jupyter 筆記本已經突破了他們「展示和講解」的角色,正變得更適合數據工程師使用。JupyterLab 會把這些筆記本升級成一款企業級工具嗎?
現如今,業內人士相信,數據和分析都可以藉助人工智慧的服務來完成。鑒於此,作為數據科學家看來最受歡迎的數據處理工具 -- 筆記本, 相關的介紹很多。這一領域的巨頭有 Apache Zeppelin,和更加著名的 Jupyter (前身是iPython)。如果你的工作平台是Databricks,通常你最後都會使用他們自有品牌的筆記本。即便如此,這些筆記本都和Jupyter兼容。
可以把筆記本看成是一個你存放代碼並添加註釋的地方。不過,也許更準確地說法是,筆記本是存放大量注釋,並用代碼加以修飾的地方。有了筆記本,你可以在Markdown格式的富文本中,穿插任意語言的代碼,本地運行,然後以文本、表格或是圖形的方式來查看結果。如果你足夠細緻的話,甚至可以把這些資產拼湊成某個窮人的儀錶盤。超越演示功能筆記本的問題在於,相比於生產環境里的數據工程工作,它更適合實驗性質的數據科學工作。雖然這只是我自己的看法,我卻堅持這麼認為。筆記本更多的是關於演示而非開發,而且缺少了很多IDE(集成開發環境)比如Eclipse, PyCharm, Visual Studio, RStudio的好的功能。
不過,凡事總有變化。Jupyter 筆記本起初是Python代碼的專屬工具,也是Anaconda的一部分。Anaconda包含了主要的Python發布,一直致力於通過JupyterLab增強Jupyter筆記本的功能,使其更像是一個IDE。本周早些時候,JupyterLab,這款受到長期吹捧的工具終於發布,可供開發者使用。考慮到這是個不大卻很重要的里程碑事件,我決定下載JupyterLab,跑一跑,並看看怎麼樣。整體而言,我印象深刻。
JupyterLab,一個基於R語言的筆記本和它的幾種可視化結果,顯示在了同一個版面上
編碼生產力JupyterLab是包含了Jupyter(筆記本)的超集。所以,在Jupyter筆記本中能做的事情,在JupyterLab中都可以做。而且能做的事情更多。
首先,一些筆記本能夠提供的,比如Tab鍵語法完成,Shift-Tab鍵查看對象工具的提示這些功能依然都在。比起獨立的Jupyter 筆記本來說,JupyterLab的功能更強:在Tab鍵完成時,提供匹配條目的類型的額外信息;在工具提示中,也提供對象相關的更多信息。有了這種基於上下文的輔助功能,開發者不必老是切換上下文,以便把事情給想清楚。
開發者們也可以工作在偏命令行風格的編程模式下,即,在控制台(而不是筆記本)內交互地運行他們的代碼。控制台是與Jupyter內核建立的實時會話(實際上語言解釋器是在筆記本後台完成代碼的執行),所以,開發者可以先在控制台環境中運行代碼,然後在以文本和圖形為主的文檔(顯示在筆記本中)中插入這些代碼。
比筆記本更強大然而,JupyterLab遠遠超越了筆記本的功能。它允許開發者打開多種格式的文件,這些文件中包含了他們可能用到的,或者由代碼產生的數據和其他資源。文件類型包括:支持語言的源代碼文件,純文本、CSV(和其他分隔符的文本格式)、JSON、各類圖片、甚至是PDF格式的文件。查看器和編輯器則包括:全功能的文本編輯器,圖片查看器,表格數據查看器,帶樹形視圖的JSON查看器,以及適用Vega, Vega-Lite和VDOM文件的查看器。
有時候,某些特定的文件適用於多個查看器。比如說,JSON和CSV文件都能以純文本方式打開。不過其實,JSON也可以用樹形視圖查看器打開,CSV也可以用表格查看器打開。Jupyter支持用多個編輯器同時打開這樣的文件,並且保持多個視圖間的同步,以便在一個編輯器中所做的修改,顯示在另一個編輯器中。
雙重視圖多視圖模型也適用於筆記本。比如,只要在筆記本內已顯示的圖像上單擊右鍵,並從菜單中選擇「為輸出建立新視圖」,多個圖像就可以並排地以各自視圖的方式顯示出來,包括筆記本的傳統視圖。
一點點拖放就可以辦到。支持在近似水平或垂直的區域中,顯示多個筆記本、輸出結果和文件查看器。區域之間用分隔列分開,每個區域容納了多個標籤文檔,每個文檔支持單獨上下滾動。一旦你習慣於創建這種布局,你甚至能夠排列出如上圖所示的儀錶盤風格的布局。
單文檔,多語言需要承認的是,這些養眼的東西有時候會讓人分心。所以,JupyterLab支持用戶在這種分塊布局和單文檔視圖之間進行切換。在單文檔視圖中,活動文檔會佔據JupyterLab瀏覽器頁或窗口的整個編輯區域。
JupyterLab支持Chrome,Firefox和Safari瀏覽器。據我有限的測試,除了單文檔視圖會導致嚴重的顯示異常以外(我確認該異常在Chrome中不存在),JupyterLab在Windows 10 Edge瀏覽器中也運行良好。
JupyterLab啟動器
類似Jupyter, JupyterLab支持多語言,前提是這些語言的內核已安裝好。如上圖所示,啟動器允許用戶選擇一種語言來創建新的筆記本,或是控制台。默認已安裝了Python內核。據我測試,我成功地安裝了R和Node/JavaScript內核。
下圖顯示了一個基於Node.js的筆記本,以及其中一種顯示結果的單獨視圖。
歸功於其對多種技術的組合,JupyterLab的安裝可以很複雜。首先,在你的系統上安裝Anaconda Python,它會安裝Jupyter的核心文件。接下來,安裝R內核的支持文件。然後,你可以下載JupyterLab,分別安裝其他語言和Jupyter內核。我是這麼安裝Node.js內核的,做了好幾步才弄對。去掉範例筆記本則耗費了額外的研究時間,安裝那些提供代碼支持所必須的模塊也是如此。
安裝也許有些難度,但並不高深(不算數據科學)。我曾經做過程序員,現在依然愛倒騰各種工具,所以我對這些東西有種本能。但是,我的編碼技能退化了,也不再是使用工具的好手了。如果我可以辦到,那麼任何有基本技能和對JupyterLab感興趣的人也可能沒什麼問題。不過,耐心和空餘時間還是需要的。如果有一個主要安裝程序,則會減少很多麻煩。
雲應用的紅利對於需要Jupyter用戶來說,由於很多雲服務(包括微軟HDInsight,亞馬遜SageMaker,及谷歌的Cloud DataLab)中已經包含了Jupyter,安裝不成問題。不知道這些包含Jupyter的服務和產品中也會包含JupyterLab嗎?但願如此,因為這樣做會讓這些平台上的數據工程體驗更好。
基於Web瀏覽器的開發工具富有創新性,但也有其局限性。對於這個難題,Jupyter是一個好榜樣。JupyterLab有助於超越這些局限,又不失創新性和便利性。讓我們希望它在生態系統中的應用越來越火。
英文原文:http://www.zdnet.com/article/can-data-science-notebooks-get-real-jupyter-lab-releases-to-users/
譯者:泰然
※2018 年學習 Python 的理由
※用Python製作迷宮GIF
TAG:Python部落 |