VS Code 中的 Jupyter Notebook
Jupyter(前身為 IPython Notebook)是一個開源專案,可讓你輕鬆地將 Markdown 文字和可執行的 Python 原始碼組合在一個稱為 notebook 的畫布上。Visual Studio Code 支援原生使用 Jupyter Notebook,以及透過Python 程式碼檔案來使用。本主題涵蓋了對 Jupyter Notebook 的原生支援,並演示瞭如何:
- 建立、開啟和儲存 Jupyter Notebook
- 使用 Jupyter 程式碼單元格
- 使用變數資源管理器和資料檢視器檢視、檢查和篩選變數
- 連線到遠端 Jupyter 伺服器
- 除錯 Jupyter Notebook
設定你的環境
要在 Jupyter Notebook 中使用 Python,你必須在 VS Code 中啟用一個 Anaconda 環境,或者啟用另一個已安裝 Jupyter包 的 Python 環境。要選擇一個環境,請從命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中使用 Python: Select Interpreter 命令。
啟用適當的環境後,你就可以建立和開啟 Jupyter Notebook,連線到遠端 Jupyter 伺服器以執行程式碼單元格,以及將 Jupyter Notebook 匯出為 Python 檔案。
工作區信任
開始使用 Jupyter Notebook 時,你要確保在一個受信任的工作區中工作。有害程式碼可以被嵌入到 notebook 中,而工作區信任功能允許你指定哪些資料夾及其內容應允許或限制自動程式碼執行。
如果你嘗試在受限模式下執行的非受信任工作區中開啟 notebook,你將無法執行單元格,並且富文字輸出將被隱藏。
建立或開啟 Jupyter Notebook
你可以透過從命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))執行 Create: New Jupyter Notebook 命令,或在你的工作區中建立一個新的 .ipynb
檔案來建立 Jupyter Notebook。
接下來,使用右上角的核心選擇器選擇一個核心。
選擇核心後,位於每個程式碼單元格右下角的語言選擇器將自動更新為該核心支援的語言。
如果你有一個現有的 Jupyter Notebook,可以透過右鍵單擊檔案並選擇用 VS Code 開啟,或者透過 VS Code 檔案資源管理器來開啟它。
執行單元格
執行單個程式碼單元格
新增程式碼後,你可以使用單元格左側的執行圖示來執行單元格,輸出將顯示在程式碼單元格下方。
要執行選定的程式碼單元格,你還可以在命令模式和編輯模式下使用鍵盤快捷鍵。Ctrl+Enter 運行當前選定的單元格。Shift+Enter 運行當前選定的單元格並在其正下方插入一個新單元格(焦點移動到新單元格)。Alt+Enter 運行當前選定的單元格並在其正下方插入一個新單元格(焦點保留在當前單元格)。
執行多個程式碼單元格
執行多個程式碼單元格可以透過多種方式完成。你可以使用 Notebook 編輯器主工具欄中的雙箭頭來執行 Notebook 中的所有單元格,或者透過選擇當前程式碼單元格上方或下方的全部執行、執行上方所有單元格或執行下方所有單元格。
執行節中的單元格
為了更輕鬆地執行 notebook 中的相關單元格,你可以使用執行節中的單元格操作來執行由 markdown 節標題分組的單元格。此操作在 notebook 大綱檢視和粘性滾動元素中可用。
在粘性滾動元素中,右鍵單擊你選擇的標題,然後透過上下文選單中的操作執行該節。在大綱檢視中,選擇懸停或選中時出現的工具欄圖示,然後透過顯示的操作執行單個單元格或一個單元格節。
儲存你的 Jupyter Notebook
你可以使用鍵盤快捷鍵 Ctrl+S 或 檔案 > 儲存 來儲存你的 Jupyter Notebook。
匯出你的 Jupyter Notebook
你可以將 Jupyter Notebook 匯出為 Python 檔案 (.py
)、PDF 或 HTML 檔案。要匯出,請在主工具欄上選擇 ... > 匯出。然後你會看到一個檔案格式選項的下拉列表。
注意: 對於 PDF 匯出,你必須安裝 TeX。如果你沒有安裝,當你選擇 PDF 選項時,系統會通知你需要安裝它。另外,請注意,如果你的 Notebook 中只有 SVG 輸出,它們將不會顯示在 PDF 中。要在 PDF 中顯示 SVG 圖形,要麼確保你的輸出包含非 SVG 影像格式,要麼你可以先匯出為 HTML,然後使用瀏覽器另存為 PDF。
在 Notebook 編輯器中使用程式碼單元格
Notebook 編輯器使你可以在 Jupyter Notebook 中輕鬆建立、編輯和執行程式碼單元格。
建立程式碼單元格
預設情況下,一個空白的 notebook 會有一個空的程式碼單元格供你開始使用,而一個現有的 notebook 會在底部放置一個。將你的程式碼新增到空的程式碼單元格即可開始。
msg = "Hello world"
print(msg)
程式碼單元格模式
在使用程式碼單元格時,單元格可以處於三種狀態:未選中、命令模式和編輯模式。程式碼單元格左側的垂直條和編輯器邊框顯示了單元格的當前狀態。當沒有條可見時,單元格是未選中的。當單元格被選中時,它可以處於命令模式或編輯模式。
在命令模式下,單元格左側會出現一個實心垂直條。該單元格可以被操作並接受鍵盤命令。
在編輯模式下,實心垂直條會伴隨著單元格編輯器周圍的邊框。單元格的內容(程式碼或 Markdown)可以被修改。
要切換模式,你可以使用鍵盤或滑鼠。在鍵盤上,按 Enter 鍵進入編輯模式,或按 Esc 鍵進入命令模式。用滑鼠點選單元格左側的垂直條或程式碼單元格中程式碼/Markdown 區域之外的地方。
新增更多程式碼單元格
你可以使用主工具欄、單元格的新增單元格工具欄(懸停時可見)以及透過鍵盤命令來新增程式碼單元格。
要在當前選定單元格下方新增一個新單元格,請使用主工具欄或單元格懸停工具欄中的加號圖示。
當代碼單元格處於命令模式時,使用 A 鍵在選定單元格上方新增一個單元格,使用 B 鍵在下方新增一個單元格。
選擇程式碼單元格
你可以使用滑鼠或鍵盤上的上/下箭頭鍵來更改選定的程式碼單元格。當代碼單元格處於命令模式時,你也可以使用 J 鍵(下)和 K 鍵(上)。
選擇多個程式碼單元格
要選擇多個單元格,請先將一個單元格置於選中模式。填充的背景表示選中的單元格。要選擇連續的單元格,按住 Shift 鍵並單擊你想要選擇的最後一個單元格。要選擇任意一組單元格,按住 Ctrl 鍵並單擊你想要新增到選擇中的單元格。
移動程式碼單元格
你可以透過拖放來在 notebook 中上下移動單元格。對於程式碼單元格,拖放區域位於單元格編輯器左側,如下所示。對於渲染後的 Markdown 單元格,你可以點選任何地方來拖放單元格。
要移動多個單元格,你可以在所選的任何單元格中使用相同的拖放區域。
鍵盤快捷鍵 Alt+Arrow 也可以移動一個或多個選定的單元格。
刪除程式碼單元格
要刪除程式碼,你可以使用程式碼單元格工具欄中的刪除圖示。當選定的程式碼單元格處於命令模式時,你可以使用鍵盤快捷鍵 dd。
撤銷你的上一次更改
你可以使用 z 鍵來撤銷你之前的更改,例如,如果你進行了意外的編輯,可以將其撤銷到之前的正確狀態,或者如果你意外刪除了一個單元格,可以恢復它。
在程式碼和 Markdown 之間切換
Notebook 編輯器允許你輕鬆地在 Markdown 和程式碼之間更改程式碼單元格。選擇單元格右下角的語言選擇器將允許你在 Markdown 和(如果適用)所選核心支援的任何其他語言之間切換。
你也可以使用鍵盤來更改單元格型別。當單元格被選中並處於命令模式時,M 鍵將單元格型別切換到 Markdown,Y 鍵將單元格型別切換到程式碼。
一旦設定為 Markdown,你就可以向程式碼單元格輸入 Markdown 格式的內容。
要渲染 Markdown 單元格,你可以選擇單元格工具欄中的複選標記,或者使用鍵盤快捷鍵 Ctrl+Enter 和 Shift+Enter。
清除輸出或重啟/中斷核心
如果你想清除所有程式碼單元格的輸出或重啟/中斷核心,可以使用主 Notebook 編輯器工具欄來完成。
啟用/停用行號
當你在命令模式下時,可以透過使用 L 鍵來啟用或停用單個程式碼單元格內的行號。
要在任何單元格上處於命令模式時切換整個 notebook 的行號,請使用 Shift+L。
目錄
要瀏覽你的 notebook,請在活動欄中開啟檔案資源管理器。然後在側邊欄中開啟大綱選項卡。
你可以使用大綱檢視中的篩選控制元件來包含 Markdown 標題、程式碼單元格和程式碼單元格符號。這些篩選器對應於以下設定:
notebook.outline.showMarkdownHeadersOnly
notebook.outline.showCodeCells
notebook.outline.showCodeCellSymbols
注意: 預設情況下,大綱只會顯示 Markdown。要顯示程式碼單元格,請啟用以下設定:Notebook > Outline: Show Code Cells。
Jupyter Notebook 編輯器中的 IntelliSense 支援
Python Jupyter Notebook 編輯器視窗具有完整的 IntelliSense 功能——程式碼補全、成員列表、方法的快速資訊和引數提示。你在 Notebook 編輯器視窗中打字的效率可以和在程式碼編輯器中一樣高。
變數資源管理器和資料檢視器
在 Python Notebook 中,可以檢視、檢查、排序和篩選當前 Jupyter 會話中的變數。在執行程式碼和單元格後,選擇主工具欄中的變數圖示,你將看到當前變數的列表,該列表會隨著程式碼中使用變數而自動更新。變數窗格將在 notebook 的底部開啟。
資料檢視器
要獲取有關變數的更多資訊,你也可以雙擊一行或使用變數旁邊的在資料檢視器中顯示變數按鈕,在資料檢視器中更詳細地檢視變數。
或者,你可以使用其他擴充套件(如 Data Wrangler)提供的資料檢視體驗。Data Wrangler 擴充套件提供了一個豐富的使用者介面來顯示關於你的資料的見解,並幫助你執行資料分析、質量檢查、轉換等操作。在我們的文件中瞭解更多關於 Data Wrangler 擴充套件 的資訊。
篩選行
在資料檢視器中篩選行可以透過在每列頂部的文字框中輸入來完成。輸入你想要搜尋的字串,任何在該列中包含該字串的行都將被找到。
如果你想找到完全匹配的項,請在你的篩選條件前加上 '='。
更復雜的篩選可以透過輸入正則表示式來完成。
儲存繪圖
要從你的 notebook 中儲存一個繪圖,只需將滑鼠懸停在輸出上並選擇右上角的儲存圖示。
注意: 支援渲染使用 matplotlib 和 Altair 建立的繪圖。
自定義 notebook 差異比較
在底層,Jupyter Notebook 是 JSON 檔案。JSON 檔案中的片段被渲染為單元格,每個單元格由三個元件組成:輸入、輸出和元資料。使用基於行的差異比較來比較 notebook 中的更改是困難且難以解析的。notebook 的富文字差異比較編輯器允許你輕鬆檢視單元格每個元件的更改。
你甚至可以自定義你希望在差異比較檢視中顯示哪些型別的更改。在右上角,選擇工具欄中的溢位選單項來自定義你想要包含的單元格元件。輸入差異將始終顯示。
要了解更多關於 VS Code 中的 Git 整合,請訪問VS Code 中的原始碼管理。
除錯 Jupyter Notebook
有兩種不同的方法可以除錯 Jupyter notebook:一種稱為“逐行執行”的更簡單的模式,以及完整的除錯模式。
注意: 這兩個功能都需要 ipykernel 6+。有關安裝或升級 ipykernel 的詳細資訊,請參閱此維基頁面。
逐行執行
逐行執行讓你一次執行一個單元格的一行,而不會被其他 VS Code 除錯功能分心。要開始,請選擇單元格工具欄中的逐行執行按鈕。
使用相同的按鈕前進一個語句。你可以選擇單元格的停止按鈕來提前停止,或者工具欄中的繼續按鈕來繼續執行到單元格的末尾。
除錯單元格
如果你想使用 VS Code 支援的全套除錯功能,例如斷點和進入其他單元格和模組的能力,你可以使用完整的 VS Code 偵錯程式。
- 首先,透過點選 notebook 單元格的左邊距來設定你需要的任何斷點。
- 然後,在執行按鈕旁邊的選單中選擇除錯單元格按鈕。這將在除錯會話中執行該單元格,並在任何執行的程式碼中暫停在你的斷點處,即使它在不同的單元格或
.py
檔案中。 - 你可以像在 VS Code 中通常那樣使用除錯檢視、除錯控制檯和除錯工具欄中的所有按鈕。
請注意,在 jupyter notebook 中除錯單元格不使用 launch.json 中的任何除錯配置。它可以改為透過諸如 jupyter.debugJustMyCode
之類的設定進行自定義。
在 notebook 中搜索
你可以透過使用鍵盤快捷鍵 Ctrl/Cmd + F 在 notebook 中搜索(或透過篩選搜尋選項搜尋其中的一部分)。點選篩選選項(漏斗圖示)以在以下範圍內搜尋:
- Markdown 單元格輸入 (Markdown Source)
- Markdown 單元格輸出 (Rendered Markdown)
- 程式碼單元格輸入 (Code Cell Source)
- 程式碼單元格輸出 (Cell Output)
預設情況下,Notebook 搜尋僅篩選單元格輸入。
連線到遠端 Jupyter 伺服器
你可以透過連線到遠端 Jupyter 伺服器,將 Jupyter Notebook 中的密集計算任務解除安裝到其他計算機上。一旦連線,程式碼單元格將在遠端伺服器上執行,而不是在本地計算機上。
連線到遠端 Jupyter 伺服器:
-
開啟 notebook 右上角的核心選擇器按鈕(或從命令面板執行 Notebook: Select Notebook Kernel 命令)。
-
選擇 Existing Jupyter Server 選項以連線到現有的 Jupyter 伺服器。
-
要首次連線到現有伺服器,請選擇 Enter the URL of the running Jupyter server。
-
當提示輸入正在執行的 Jupyter 伺服器的 URL 時,提供伺服器的 URI(主機名),幷包含帶有
?token=
URL 引數的身份驗證令牌。(如果你在啟用了身份驗證令牌的情況下在 VS Code 終端中啟動伺服器,帶有令牌的 URL 通常會出現在終端輸出中,你可以從那裡複製它。)或者,你可以在提供 URI 後指定使用者名稱和密碼。
注意: 為了增加安全性,Microsoft 建議為你的 Jupyter 伺服器配置安全預防措施,例如 SSL 和令牌支援。這有助於確保傳送到 Jupyter 伺服器的請求經過身份驗證,並且與遠端伺服器的連線是加密的。有關保護 notebook 伺服器的指導,請參閱 Jupyter 文件。
資料科學配置檔案模板
配置檔案可讓你根據當前專案或任務快速切換你的擴充套件、設定和 UI 佈局。為了幫助你開始使用 Jupyter Notebook,你可以使用資料科學配置檔案模板,這是一個包含有用擴充套件、設定和程式碼片段的精選配置檔案。你可以直接使用配置檔案模板,也可以將其作為起點,為自己的工作流程進行進一步的自定義。
您透過“**配置檔案**”>“**建立配置檔案...**”下拉選單選擇一個配置檔案模板
一旦你選擇了一個配置檔案模板,你可以審查其設定和擴充套件,並且如果你不想將某些項包含在新配置檔案中,可以單獨移除它們。基於模板建立新配置檔案後,對設定、擴充套件或 UI 所做的更改將持久化在你的配置檔案中。