Spy Notebook
Spy Notebook 是一款用於 SteelPython 的桌面筆記本:由 Python 和 Markdown 儲存格組成的頁面,在一個即時 Python 會話中逐個執行,每個儲存格的輸出——列印的文字、最後一行的值、回溯和圖表——都顯示在其下方。筆記本以純 Markdown 檔案儲存,在任何編輯器和版本控制中都易於閱讀;也可以開啟和匯出 Jupyter 筆記本(.ipynb)。

啟動
從 SteelPython 的資料夾執行 SpyNotebook.exe。不指定檔案時,它會開啟你的預設筆記本(儲存在 %APPDATA%\SteelPython\Spy Notebook\Default.md 中);SpyNotebook.exe analysis.md 會開啟一個筆記本,File > Open 可以開啟 .md 和 .ipynb 檔案。
儲存格
筆記本是一系列儲存格。Python 儲存格存放程式碼;Markdown 儲存格存放筆記。所有 Python 儲存格都在同一個會話中執行,因此在一個儲存格中定義的變數或函式可以在其後的儲存格中使用——與 Jupyter 的模型相同。
| 按鍵 | 功能 |
|---|---|
F3 / F4 |
新增 Python / Markdown 儲存格(按住 Shift 可複製目前儲存格) |
F5 或 Ctrl+Enter |
執行目前儲存格,或僅執行其中選中的文字 |
Shift+Enter |
執行目前儲存格並移到下一個 |
Ctrl+F5 |
清除所有輸出並按順序執行每個 Python 儲存格(遇到第一個錯誤時停止) |
Tab / Ctrl+Space |
根據即時會話補全游標前的名稱 |
F11 / F12 |
將目前儲存格轉換為 Markdown / Python |
Ctrl+Shift+Up / Down |
移動目前儲存格及其輸出 |
Ctrl+O / Ctrl+S |
開啟 / 儲存 |
輸出
儲存格下方會顯示它列印的內容(輸出到 stdout 和 stderr 的內容)、最後一行的值(如果它是表示式;在行尾加 ; 可以不顯示)、失敗時的回溯,以及它的影像:
- 儲存格執行結束時,會顯示每個開啟的 matplotlib 圖形,因此
plt.plot(...)不需要plt.show(); display(obj)會把具有_repr_png_方法的物件(例如 Pillow 影像)顯示為圖片,其他物件則顯示為文字。
input() 在儲存格中無法使用,因為沒有可以輸入的終端:請改為把值放在變數中,或用 Kernel > Arguments... 傳入參數,它會設定 sys.argv[1:]。
停止和重新啟動
儲存格執行時,選單欄右側會有一個琥珀色指示器在轉動,儲存格的執行按鈕會變成方塊。按一下其中任意一個,或使用 Run > Stop Running Cell,即可停止它:Python 會在該儲存格中引發 KeyboardInterrupt,這會結束 time.sleep、網路等待或長迴圈,並保留你的變數。如果儲存格在三秒內沒有停止(卡在編譯程式碼中,或自己捕獲了 KeyboardInterrupt),則會通過重新啟動會話來結束它;輸出中會有一條說明。
Kernel > Restart Kernel 會啟動一個沒有任何變數的全新會話,Restart Kernel and Run All 則隨後從頭執行整個筆記本——這是檢查筆記本能否從頭到尾正常執行的可靠方法。
直譯器、環境和包
狀態列顯示筆記本的檔案、儲存格、直譯器和會話狀態(啟動中、空閒、忙碌)。按一下直譯器,或使用 Kernel 選單:
Kernel > Interpreter用於選擇 SteelPython 本身,或筆記本所在資料夾中的虛擬環境(.venv、venv、env);Kernel > Create Virtual Environment...會在該資料夾中建立一個帶有 pip 的環境,並切換到該環境;Kernel > Packages...用 pip 列出、安裝、升級和解除安裝包。pip 獨立於你的會話執行:你已經匯入的包會保持舊版本,直到你重新啟動核心。
檔案格式
筆記本是一個 Markdown 檔案。Python 儲存格是標記為 Python 的程式碼圍欄,儲存格儲存的輸出跟在其後,位於標記為 Cache 的圍欄中:
# Monthly sales
A small look at a year of sales figures.
```Python
total = sum([1475.6, 1554.8, 1593.26])
total
```
```Cache
4623.66
```
圍欄之外的文字是 Markdown。影像在筆記本開啟期間以及在 .ipynb 檔案中會保留,但不會儲存在僅包含文字的 Markdown 檔案中。
該格式與 Pure Notebook 所用的格式相同,Pure Notebook 是 C# 的 Pure 的筆記本,因此同一個檔案在兩者中都能開啟。Pure 筆記本中的 C# 儲存格(標記為 C# 的圍欄)會以只讀方式顯示,並標明不在此處執行,儲存時保持不變。
Jupyter 筆記本
File > Import Jupyter Notebook...會讀取.ipynb並將其儲存為 Markdown 筆記本,保留文字輸出和影像。- 也可以直接開啟
.ipynb;此時它會儲存為.ipynb。 File > Export會將筆記本寫出為.ipynb(包含輸出和影像)、Python 指令碼,或不含輸出的 Markdown。
從命令列使用
SpyNotebook.exe analysis.md open a notebook
SpyNotebook.exe analysis.md input.csv open it; its code sees sys.argv[1:] == ['input.csv']
SpyNotebook.exe --batch analysis.md run every Python cell without a window and print the output
SpyNotebook.exe --create new.md create an empty notebook
--batch 可以把筆記本變成一個指令碼,供你計劃執行或在構建中執行。
安全保障
在任何程式碼執行之前以及視窗關閉時,Spy Notebook 都會將筆記本以 <file>.backup 的形式寫入其檔案旁邊,並在備份與已儲存內容一致時再將其刪除。如果程式或你的機器意外停止,備份中會儲存你最新的儲存格。Help > About 會顯示報告問題時需要提供的版本號,並帶有一個複製這些版本號的按鈕。