神器 Jupyter,終於來了!

2021-10-21 20:46:41 字數 3431 閱讀 6986

以後 jupyter 也能做視覺化 debug,jupyter 團隊發布第乙個 debug 外掛程式與核心。

python **編輯器怎麼選?pycharm、vs code、jupyter notebook 都各有特色,jupyter 適合做資料分析這些需要視覺化的操作,pycharm 更適合做完整的 python 專案。然而,因為互動式操作,很少會有開發者想到用 jupyter 做 debug。

儘管很多讀者可能認為 jupyter 用來做展示和小型試驗就足夠了,debug 並沒有太大的需求,但彌補上 jupyter 缺失的一環,能讓它更好用,未來 debug 也會作為預設模式。

為什麼 jupyter 需要 debug?

jupyter 這種工具雖然有很好的互動性能,但其也明白,對於大型**庫,最好還是用傳統的 ide 比較靠譜。因此為了彌補這一缺陷,jupyter 專案在過去幾年也希望通過 jupyterlab 來加強對大型**庫的處理過程。

然而,jupyterlab 還是有一大缺陷,它不能通過視覺化的方式進行 debug,這限制了進一步的除錯。這幾天,jupyter 團隊表示,經過幾個月的開發,他們很高興能第一次發布 jupyter 視覺化 debugger。

雖然這只是第一版,但目前已經可以設定常見的斷點 debug,檢視各種變數、執行模組等資訊。

新工具的用法也很簡單,很常見的 debug 方式差不多。如果讀者想要安裝這個新工具,那麼首先你需要為 jupyterlab 裝前端外掛程式:

jupyter labextension install @jupyterlab/debugger
至於後端 kernel,jupyter 團隊表示目前 kernel 需要實現 jupyter debug protocol,因此暫時只能用xeus-python:

conda install xeus-python -c conda-forge
只要裝好前端與後端,我們就可以直接使用了。開發者還提供了 debug 的線上體驗版,不需要安裝任何東西就能體驗。

xeus-python:第乙個支援 jupyter debug 的核心

xeus 是 jupyter kernel protocol 的 c++實現,它本身並不是乙個核心,而是能幫助構建核心的庫。當開發者希望構建 python、lua 等擁有 c、c++ api 的語言核心時,它非常有用。

目前已經有一些核心使用 xeus 進行開發,xeus-python 核心是我們做 python 開發時可選的乙個核心,它去年就已經有發布。xeus-python 之所以被 jupyter 團隊選為第乙個實現 debug 的核心,主要是它有以下兩大優勢:

短期內,xeus-python 還會有進一步提公升的計畫,例如新增 ipython 魔術方法,優化 xeus-python 的 pypi 等。

深入至 debugger 的前端架構

jupyterlab 的 debugger 擴充套件針對使用者對 ide 的使用習慣提供了通常性功能:

當使用 jupyter 筆記本時,執行的狀態儲存在核心中。但是如果我們執行了乙個 cell,然後又把整個 cell 刪了,那麼使用者在 dubug 的時候希望執行到那些**又怎麼辦?

如下**所示,該外掛程式支援特定用例,並能在唯讀模式下檢視以前執行過的 cell。

進入已刪除的單元格

在 jupterlab 中除錯**控制台

在 jupyterlab 中除錯檔案

可以在 notebook 級別上啟用除錯,使用者可以在除錯 notebook 的同時在另乙個 notebook 上工作。

同時除錯多個筆記本

可以使用樹狀檢視器和錶狀檢視器檢查變數:

變數瀏覽器

jupyterlab 的 debugger 外掛程式目標是與任何支援除錯核心一併使用。通過 debug adapter protocol,debugger 外掛程式可以抽象出針對於特定語言的功能,並為使用者提供匹配的除錯介面。

並且團隊計畫在 2020 年對 debugger 的體驗進行重大改進,例如在變數瀏覽器中支援豐富的渲染,在 ui 中支援條件斷點。

vs code 視覺化 debug 工具

debug 是條漫漫長路,不久前機器之心也介紹過一款 vs code 實時視覺化 debug 工具,在此也可以作為參考。以一種更優雅、更簡潔的 debug 方式幫使用者找到**問題所在是未來優化的方向之一,而之前所介紹這款視覺化 debug 能夠快速展示資料結構。

從效果層面上看此款工具更加驚豔,而且跟以往傳統 debug 方式的展示形式完全不同,比如將斷點設定為第 32 行定義雙向鍊錶,隨後一行行執行**就會在右圖展現出對應的資料結構圖。

同時也會根據資料結構以不同的方式展現,例如樹形、**、曲線和圖等。

同時還內建了其他可自定義的視覺化調節器,可以根據面對不同的處理物件,可選擇更易於理解的視覺化方式。比如圖表視覺化,plotly 視覺化,tree 視覺化,網格視覺化,文字視覺化等等。

plotly 視覺化

ast 視覺化

不過這款 vs code 的 debug 工具開發者正在**其對 python 的支援,而對於 python 的完美支援會使得該專案更加便捷且適用。

而對於 debug 來說,不管最終是採用的是 print()**,或是善用 assert 語句,亦或是以直接設定斷點,包括各種新推出的 debug 工具。單從輔助工具角度層面看,只要它能夠提高工作效率,不管是哪款 debug 工具,找到適合你的那便是值得一試。

arch終於回來了

昨天閒得無聊更新下arch,結果今天早上發現開不了機了,連命令列也進不去,各種試都沒有效果,手邊得arch安裝盤好像也壞了,插進去重啟也沒什麼反應,還以為電腦壞了,後來找了張gentoo得啟動盤,進去之後改了run level 為3,重啟後能進命令列了,但一startx就不行,不管gonme,xfc...

iphone終於出來了

聯通的 正式出來了 網路頻率 gsm 850 900 1800 1900mhz,支援 wcdma,支援 gprs edge 可選顏色 銀黑尺寸 體積 115.5 62.1 12.3mm 88cm3 重量133g 主螢幕引數 1600萬色tft顯示屏,解析度為320 480,3.5英吋 作業系統 其他...

終於緩過來了

在五一之前的受傷和五一的休閒之後,整個人都鬆散下來了,不知道做什麼好。雖然每天也去上自習,早上也能8點起床,但總是進不了狀態。就如很鬱悶的幾個星期中所描述的,我似乎就像在沒適應的空調車裡面,暈暈沉沉的,什麼事都不想做,但什麼事都會逼著自習做一些。但回頭一想,自己是在正確的方向嗎?自己所做的事還有價值...