許多專業數據科學家使用Jupyter筆記本來完成他們的日常任務,從初步數據探索到模型原型製作。筆記本的互動性對於以數據為中心的編程特別方便,其自我文獻的性質為分析結果的交流提供了極大的支持。
然而,Jupyter筆記本電腦經常因養成不良的編程習慣和幾乎不支持軟件工程最佳實踐而受到批評。為了真正從筆記本中受益,用戶應該意識到他們的常見陷阱並學習如何預防它們。
在先前的工作中(請參閱“與計算筆記本協作的最佳實踐” [1]),我們介紹了17種經驗驗證的準則目錄,以在專業背景下協作使用筆記本。
為了促進這些最佳實踐的採用,我們創建了Pynblint,這是用Python編寫的Jupyter筆記本的靜態分析工具。 Pynblint揭示了潛在的筆記本缺陷,並建議採取糾正措施。它可以作為獨立的CLI應用程序或CI/CD管道的一部分操作。
Pynblint的核心覆蓋規則已被得出作為我們目錄中最佳實踐的操作。儘管如此,Pynblint的插件體系結構使用戶可以輕鬆地使用自己的伸縮規則擴展核心檢查集。
Python 3.7+。
Pynblint可以使用pip或其他PYPI軟件包管理器安裝:
pip install pynblint安裝後,我們建議探索工具的命令行接口:
pynblint --helpPynblint可用於分析:
獨立筆記本:
pynblint path/to/the/notebook.ipynb包含筆記本的代碼存儲庫:
pynblint path/to/the/project/dir/ (可能也被壓縮為.zip存檔):
pynblint path/to/the/compressed/archive.zip一個包含筆記本的公共GitHub存儲庫(我們的路線圖上支持對私人存儲庫的支持?):
pynblint --from-github https://github.com/collab-uniba/pynblint有關可用選項的更多信息,請參考項目文檔。
Pynblint當前實施22條刺激規則:
這些規則源自我們為協作筆記本開發的最佳實踐目錄而得出的[1]。以下是與每種最佳實踐相關的刺激規則的當前實施狀態:
| [1]的最佳實踐 | 地位 | 細節 |
|---|---|---|
| 1。使用版本控件 | ✅完成 | 完全實施 |
| 2。管理項目依賴性 | ✅完成 | 完全實施 |
| 3。使用獨立環境 | ⏳正在進行中: | 計劃:檢測 - Python虛擬環境(例如,使用 venv , pyenv或conda創建)- 容器化環境(例如,Docker)。 |
| 4。開始進口 | ✅完成 | 完全實施 |
| 5。確保重新執行性(重新運行筆記本電腦自上而下) | ✅完成 | 完全實施 |
| 6。將您的代碼模塊化 | ?部分的 | 當前:筆記本中的模塊化結構的檢測。 計劃:基於檢測模式的模塊化重點建議 |
| 7。測試您的代碼 | ?部分的 | 當前:覆蓋範圍數據的存儲庫級檢測。 計劃:檢測測試模塊/功能,獨立於覆蓋工具 |
| 8。一貫命名筆記本 | ✅完成 | 完全實施 |
| 9。堅持編碼標準 | ?部分的 | 電流:用無效的Python語法檢測細胞。 計劃:Python Linters的整合,例如Pylint,Flake8和Ruff |
| 10。使用相對路徑 | ⏳正在進行中: | 計劃:識別筆記本中的絕對路徑實例和相應相對路徑的建議 |
| 11.記錄您的分析 | ✅完成 | 完全實施 |
| 12.槓桿降價標題構造筆記本 | ✅完成 | 完全實施 |
| 13。保持筆記本清潔 | ✅完成 | 完全實施 |
| 14.保持筆記本簡明 | ✅完成 | 完全實施 |
| 15。區分生產和開發工件 | 沒有計劃 | 實施被認為是不可行的(請參見下面的註釋) |
| 16.使您的筆記本可用 | ⏳正在進行中: | 計劃:Pynblint將確保在其配置中發布的標記的筆記本可在線獲得 |
| 17.使您的數據可用 | ✅完成 | 完全實施 |
注意:最佳實踐#15(區分生產/開發工件)將無法實施,因為沒有客觀的標準可以通過對筆記本或存儲庫的靜態分析來確定這種區別。
該項目是根據MIT許可證的條款獲得許可的。
[1] Luigi Quaranta,Fabio Calefato和Filippo Lanubile。 2022。引起與計算筆記本協作的最佳實踐。 Proc。 ACM Hum.-Comput。相互影響。 6 ,CSCW1,第87條(2022年4月),41頁。 https://doi.org/10.1145/3512934