Python 互動式視窗

Jupyter (原名 IPython Notebook) 是一個開放原始碼專案,可讓您輕鬆地在稱為 **notebook** 的單一畫布上結合 Markdown 文字和可執行的 Python 原始碼。Visual Studio Code 原生支援使用 Jupyter Notebook,也支援透過 Python 程式碼檔案使用。本主題涵蓋透過 Python 程式碼檔案提供的支援,並示範如何

  • 使用類似 Jupyter 的程式碼儲存格
  • 在 Python 互動式視窗中執行程式碼
  • 使用變數檢視器和資料檢視器檢視、檢查和篩選變數
  • 連線到遠端 Jupyter 伺服器
  • 偵錯 Jupyter Notebook
  • 匯出 Jupyter Notebook

若要使用 Jupyter Notebook,您必須在 VS Code 中啟用 Anaconda 環境,或另一個已安裝 Jupyter 套件的 Python 環境。若要選取環境,請使用命令選擇區中的 [Python: 選取直譯器] 命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。

一旦啟用適當的環境,您就可以建立和執行類似 Jupyter 的程式碼儲存格、連線到遠端 Jupyter 伺服器以執行程式碼儲存格,以及將 Python 檔案匯出為 Jupyter Notebook。

Jupyter 程式碼儲存格

您可以使用 # %% 註解在 Python 程式碼中定義類似 Jupyter 的程式碼儲存格

# %%
msg = "Hello World"
print(msg)

# %%
msg = "Hello again"
print(msg)

注意:請務必將上方顯示的程式碼儲存在副檔名為 .py 的檔案中。

當 Python 擴充功能偵測到程式碼儲存格時,它會新增 [執行儲存格] 和 [偵錯儲存格] CodeLens 裝飾項。第一個儲存格也包含 [在下方執行],而所有後續儲存格都包含 [在上方執行]

Jupyter adornments for code cells in the VS Code editor

注意:預設情況下,[偵錯儲存格] 只會逐步執行使用者程式碼。如果您想要逐步執行非使用者程式碼,您需要在 Jupyter 擴充功能設定中取消選取 [僅偵錯我的程式碼] (⌘, (Windows, Linux Ctrl+,))。

[執行儲存格] 僅適用於一個程式碼儲存格。[在下方執行] (顯示在第一個儲存格上) 會執行檔案中的所有程式碼。[在上方執行] 適用於所有程式碼儲存格,但不包括具有裝飾項的儲存格。例如,您可以使用 [在上方執行] 在執行特定儲存格之前初始化執行階段環境的狀態。

選取命令會啟動 Jupyter (如有必要,可能需要一分鐘),然後在 Python 互動式視窗中執行適當的儲存格

Code cells running in a Python Interactive window

您也可以使用 (Ctrl+Enter) 或 [Python: 在 Python 終端機中執行選取範圍/行] 命令 (Shift+Enter) 來執行程式碼儲存格。使用此命令後,Python 擴充功能會自動將游標移至下一個儲存格。如果您位於檔案中的最後一個儲存格,則擴充功能會自動插入另一個 # %% 分隔符號以建立新的儲存格,以模擬 Jupyter Notebook 的行為。

您也可以按一下行號左側的邊界來設定中斷點。然後,您可以使用 [偵錯儲存格] 來啟動該程式碼儲存格的偵錯工作階段。偵錯工具會在到達中斷點時停止執行,並讓您一次逐步執行一行程式碼並檢查變數 (詳細資訊請參閱 偵錯)。

其他命令和鍵盤快速鍵

下表列出使用程式碼儲存格時支援的其他命令和鍵盤快速鍵。

命令 鍵盤快速鍵
Python: 移至下一個儲存格 Ctrl+Alt+]
Python: 移至上一個儲存格 Ctrl+Alt+[
Python: 依上方儲存格延伸選取範圍 Ctrl+Shift+Alt+[
Python: 依下方儲存格延伸選取範圍 Ctrl+Shift+Alt+]
Python: 向上移動選取的儲存格 Ctrl+; U
Python: 向下移動選取的儲存格 Ctrl+; D
Python: 在上方插入儲存格 Ctrl+; A
Python: 在下方插入儲存格 Ctrl+; B
Python: 在位置下方插入儲存格 Ctrl+; S
Python: 刪除選取的儲存格 Ctrl+; X
Python: 將儲存格變更為程式碼 Ctrl+; C
Python: 將儲存格變更為 Markdown Ctrl+; M

使用 Python 互動式視窗

先前章節中提及的 [Python 互動式視窗] 可以用作獨立主控台,其中包含任意程式碼 (無論有無程式碼儲存格)。若要將視窗用作主控台,請使用命令選擇區中的 [Jupyter: 建立互動式視窗] 命令開啟它。然後,您可以輸入程式碼,使用 Enter 鍵換行,並使用 Shift+Enter 鍵執行程式碼。

若要將視窗與檔案搭配使用,請使用命令選擇區中的 [Jupyter: 在 Python 互動式視窗中執行目前檔案] 命令。

IntelliSense

Python 互動式視窗具有完整的 IntelliSense – 程式碼完成、成員清單、方法快速資訊和參數提示。您可以在 Python 互動式視窗中輸入文字,就像在程式碼編輯器中一樣有效率。

IntelliSense in the Python Interactive window

繪圖檢視器

繪圖檢視器讓您能夠更深入地處理繪圖。在檢視器中,您可以平移、縮放和瀏覽目前工作階段中的繪圖。您也可以將繪圖匯出為 PDF、SVG 和 PNG 格式。

在 Python 互動式視窗中,按兩下任何繪圖以在檢視器中開啟,或選取繪圖左上角的展開按鈕。

Plot Viewer with the Python Interactive window

注意:Python 互動式視窗支援呈現使用 matplotlibAltair 建立的繪圖。

變數檢視器和資料檢視器

在 Python 互動式視窗中,您可以檢視、檢查和篩選目前 Jupyter 工作階段中的變數。在執行程式碼和儲存格之後,選取互動式視窗工具列中的 [變數] 按鈕以開啟變數檢視器,您會看到目前變數的清單,當變數在程式碼中使用時,清單將會自動更新。

Variables Explorer

如需有關變數的其他資訊,您也可以按兩下資料列,或使用 [在資料檢視器中顯示變數] 按鈕,以在資料檢視器中查看變數的更詳細檢視。開啟後,您可以透過搜尋資料列來篩選值。

Data Viewer

連線到遠端 Jupyter 伺服器

您可以透過連線到遠端 Jupyter 伺服器,將 Jupyter Notebook 中的密集運算卸載到其他電腦。連線後,程式碼儲存格會在遠端伺服器而非本機電腦上執行。

若要連線到遠端 Jupyter 伺服器

  1. 從命令選擇區執行 [Jupyter: 指定本機或遠端 Jupyter 伺服器以進行連線] 命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。

  2. 選取您想要連線到 Jupyter 伺服器的方式。 Prompt to supply a Jupyter server URI

  3. 如果遠端工作,請在出現提示時提供伺服器的 URI (主機名稱),並在其中包含具有 ?token= URL 參數的驗證權杖。(如果您在 VS Code 終端機中使用已啟用的驗證權杖啟動伺服器,則通常會從終端機輸出中顯示具有權杖的 URL,您可以從中複製它。) 或者,您也可以在提供 URI 後指定使用者名稱和密碼。

    Prompt to supply a Jupyter server URI

  4. Python 互動式視窗會顯示 URI (在下圖中已模糊處理) 以指出程式碼的執行位置

    The Python Interactive window showing that code is running on a remote Jupyter server

注意:為了提高安全性,Microsoft 建議您使用 SSL 和權杖支援等安全性預防措施來設定 Jupyter 伺服器。這有助於確保傳送至 Jupyter 伺服器的要求已通過驗證,並且與遠端伺服器的連線已加密。如需有關保護 Notebook 伺服器的指引,請參閱 Jupyter 文件

將 Jupyter Notebook 轉換為 Python 程式碼檔案

當您啟用了已安裝 Jupyter 的環境後,您可以在 VS Code 中開啟 Jupyter Notebook 檔案 (.ipynb),然後將其轉換為 Python 程式碼。轉換檔案後,您可以像使用任何其他 Python 檔案一樣執行程式碼,也可以使用 VS Code 偵錯工具。在 VS Code 中開啟和偵錯 Notebook 是一種尋找和解決程式碼錯誤的便捷方法,這在 Jupyter Notebook 中直接執行很困難。

當您開啟 Notebook 檔案時,Visual Studio Code 會自動在 Notebook 編輯器中開啟它。使用工具列上的轉換圖示,將 Notebook (.ipynb) 檔案轉換為 Python 檔案 (.py)。

Icon to convert a Jupyter notebook file

選取轉換圖示,然後選取 [Python 指令碼],等待幾秒鐘,然後 VS Code 會在未命名的檔案中開啟轉換後的 Notebook。Notebook 的儲存格在 Python 檔案中以 # %% 註解分隔;Markdown 儲存格會完全轉換為以 # %% [markdown] 開頭的註解,並在互動式視窗中與程式碼和輸出 (例如圖表) 一起呈現為 HTML

Jupyter notebook running in VS Code and the Python Interactive window

注意:第一次在 Python 檔案中執行程式碼儲存格時,Python 擴充功能會啟動 Jupyter 伺服器。伺服器啟動並顯示包含程式碼結果的 [Python 互動式視窗] 可能需要一些時間。

偵錯 Jupyter Notebook

Visual Studio Code 偵錯工具可讓您逐步執行程式碼、設定中斷點、檢查狀態和分析問題。使用偵錯工具是尋找和修正 Notebook 程式碼問題的實用方法。

  1. 在 VS Code 中,啟用已安裝 Jupyter 的 Python 環境,如本文開頭所述。

  2. 將 Notebook 的 .ipynb 檔案匯入 VS Code,如上一節所述。(如果您使用雲端式 Jupyter 環境 (例如 Azure Notebooks),請先下載檔案。)

  3. 若要啟動偵錯工具,請使用下列其中一個選項

    • 針對整個 Notebook,開啟命令選擇區 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並執行 [Jupyter: 在 Python 互動式視窗中偵錯目前檔案] 命令。
    • 針對個別儲存格,請使用顯示在儲存格上方的 [偵錯儲存格] 裝飾項。偵錯工具會特別在該儲存格中的程式碼上啟動。預設情況下,[偵錯儲存格] 只會逐步執行使用者程式碼。如果您想要逐步執行非使用者程式碼,您需要在 Jupyter 擴充功能設定中取消選取 [僅偵錯我的程式碼] (⌘, (Windows, Linux Ctrl+,))。
  4. 若要熟悉 VS Code 的一般偵錯功能,例如檢查變數、設定中斷點和其他活動,請檢閱 VS Code 偵錯

  5. 當您發現問題時,請停止偵錯工具、修正程式碼、儲存檔案,然後重新啟動偵錯工具。

  6. 當您確定所有程式碼都正確時。儲存檔案,然後依照下列章節所述匯出 Notebook。然後,您可以將 Notebook 上傳到您的正常 Jupyter 環境。

匯出 Jupyter Notebook

除了開啟 Jupyter Notebook 之外,您也可以使用命令選擇區中的下列其中一個命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) ,將 VS Code 中 Python 檔案的內容匯出到 Jupyter Notebook (副檔名為 .ipynb)。

  • Jupyter: 將目前的 Python 檔案匯出為 Jupyter Notebook:從目前檔案的內容建立 Jupyter Notebook,並使用 # %%# %% [markdown] 分隔符號來指定其各自的儲存格類型。
  • Jupyter: 將目前的 Python 檔案和輸出匯出為 Jupyter Notebook:從目前檔案的內容建立 Jupyter Notebook,並包含程式碼儲存格的輸出。
  • Jupyter: 將互動式視窗匯出為 Jupyter Notebook:從 Python 互動式視窗的內容建立 Jupyter Notebook。

匯出內容後,VS Code 會顯示提示,您可以使用該提示在瀏覽器中開啟 Notebook。