反應式 Python 筆記本,可重複、git 友善且可部署為腳本或應用程式。
文檔· Discord ·範例
英文 |簡體中文
marimo是一個反應式 Python 筆記本:運行單元格或與 UI 元素交互,並且 marimo 自動運行依賴單元格(或將它們標記為過時),保持程式碼和輸出一致。 marimo 筆記本以純 Python 形式存儲,可以作為腳本執行,也可以作為應用程式部署。
亮點。
jupyter
、 streamlit
、 jupytext
、 ipywidgets
、 papermill
等.py
文件 pip install marimo & & marimo tutorial intro
在我們的線上遊樂場嘗試 marimo,它完全在瀏覽器中運行!
跳到快速入門,了解我們的 CLI 入門知識。
marimo 保證您的筆記本程式碼、輸出和程式狀態保持一致。這解決了與 Jupyter 等傳統筆記本相關的許多問題。
反應式程式設計環境。運行一個單元格,marimo 會透過自動執行引用其變數的單元格來做出反應,從而消除了手動重新運行單元格的容易出錯的任務。刪除一個儲存格後,marimo 會從程式記憶體中清除其變量,從而消除隱藏狀態。
相容於昂貴的筆記型電腦。 marimo 允許您將運行時配置為惰性運行,將受影響的單元標記為過時而不是自動運行它們。這可以保證程序狀態,同時防止意外執行昂貴的單元。
同步的 UI 元素。與滑桿、下拉式選單、資料框轉換器和聊天介面等 UI 元素進行交互,使用它們的單元格會自動以其最新值重新運行。
互動式資料框。快速翻頁、搜尋、過濾和排序數百萬行,無需任何程式碼。
高性能的運行時。 marimo 只運行那些需要透過靜態分析程式碼來運行的單元。
動態 Markdown 和 SQL。使用 Markdown 講述依賴 Python 資料的動態故事。或建立依賴 Python 值的 SQL 查詢,並使用我們內建的 SQL 引擎對資料框、資料庫、CSV、Google Sheets 或其他任何內容執行查詢,該引擎將結果作為 Python 資料框傳回。
你的筆記本仍然是純 Python,即使它們使用 Markdown 或 SQL。
確定性的執行順序。筆記本按照確定的順序執行,基於變數引用而不是頁面上單元格的位置。整理你的筆記本,以最適合你想要說的故事。
內建包管理。 marimo 內建了對所有主要套件管理器的支持,讓您可以在匯入時安裝套件。 marimo 甚至可以序列化筆記本文件中的包要求,並自動將它們安裝在隔離的 venv 沙箱中。
含電池。 marimo 配備了 GitHub Copilot、AI 助手、Ruff 程式碼格式化、HTML 匯出、快速程式碼完成、VS Code 擴充功能、互動式資料幀檢視器以及更多生活品質功能。
安裝。在終端中,運行
pip install marimo # or conda install -c conda-forge marimo
marimo tutorial intro
建立筆記本。
建立或編輯筆記本
marimo edit
運行應用程式。將筆記本作為 Web 應用程式運行,Python 程式碼隱藏且不可編輯:
marimo run your_notebook.py
作為腳本執行。在命令列中將筆記本作為腳本執行:
python your_notebook.py
自動轉換 Jupyter 筆記本。使用 CLI 自動將 Jupyter 筆記本轉換為 marimo 筆記本
marimo convert your_notebook.ipynb > your_notebook.py
或使用我們的網路介面。
教程。列出所有教程:
marimo tutorial --help
請參閱我們文件中的常見問題。
marimo 很容易上手,為高級用戶提供了很大的空間。例如,這是一個用 marimo 製作的嵌入視覺化工具(影片):
查看我們的文件、 examples/
資料夾和我們的圖庫以了解更多資訊。
教學 | 輸入 | 地塊 | 佈局 |
我們感謝所有的貢獻!您無需成為專家即可提供協助。請參閱 CONTRIBUTING.md 以了解有關如何開始的更多詳細資訊。
問題?在 Discord 上聯絡我們。
我們正在建立一個社區。來和我們一起出去玩吧!
marimo 是 Python 筆記本的重新發明,作為一個可複製、互動式和可共享的 Python 程序,而不是一個容易出錯的 JSON 便條本。
我們相信,我們使用的工具塑造了我們的思考方式──更好的工具,更好的思維。透過marimo,我們希望為Python社群提供更好的程式設計環境來進行研究和交流;試驗代碼並分享;學習計算科學並教授它。
我們的靈感來自許多地方和項目,尤其是 Pluto.jl、ObservableHQ 和 Bret Victor 的文章。 marimo 是響應式資料流程式設計這項更大運動的一部分。從 IPyflow、streamlit、TensorFlow、PyTorch、JAX 和 React,函數式、聲明式和反應式程式設計的思想正在使各種工具變得更好。