前言
用 python 做資料相關工作的,相信必定用過 jupyter notebook,前段時間就有人跟我吐槽,因為 jupyter notebook 的問題,差點丢掉工作。
類似下面的情況:
第二個單元格生成最終的資料,但是裡面使用了第一個單元格定義的變量。好巧不巧,修改了第一個單元格内容并執行,卻忘記執行第二個單元格。
這也是我經常需要提示自己,每次都要從頭到尾執行一次。
這也是為什麼這些環境中,每個單元格前面都有一個小數字,就是為了提醒你,這些單元格的執行次序。
但這現在已經不再是問題了。你能想象,當我執行第一個單元格的時候,第二個單元格會自動更新内容嗎?
這就是 marimo,它并不是一個庫,而是一個 python 平台。它不僅僅是自帶響應式更新單元格資料。還能編寫一些頁面元件,讓你更直接編寫自己的資料報告頁面。
我們來體驗一下。
通過 pip 安裝并啟動:
pip install marimo -U && marimo tutorial intro
如無意外,能看到服務啟動的資訊:
浏覽器也會自動打開了頁面。
由于上面的指令是啟動内置的模闆,裡面已經有了一些内容。
簡單來介紹一些關鍵。
我們需要在 mariom 的服務頁面上寫 python 代碼。導入它,後面用于建立頁面元素。
mo.md 寫入 markdown 内容。上方顯示内容。
這也太普通了。弄一個能互動的東西吧
乍看之下,沒什麼作用。但是,現在可以在其他的單元格中使用定義的變量 slider :
- 注意的是 slider.value 通路元件的值
現在,拖動下方的 slider,上方單元格的'葉子'也會顯示相應的數量。
有趣吧。現在我們不再需要擔心某些單元格因為個人疏忽忘記執行了。頁面總是最新的可用的結果。
有人會說,這些還不夠吸引我,如果能發給别人看就完美了。
接下來看看幾種分發的方式。
打開右上角的按鈕
選第二項,顯然是導出一份靜态的 html 檔案。
此時如果浏覽器打開後,還能關聯,那就神了。
可想而知,靜态檔案導出,作用不是非常大。适合頁面上沒有互動的元件。
那麼,能不能直接把代碼檔案發給别人,别人安裝了 mariom 情況下,可以跑起來。這肯定是可以,并且與 jp notebook 很不一樣的地方在于,mariom 生成的是普通的 python 代碼檔案。
在頁面最上方可以看到目前的代碼檔案所在:
找到檔案,我們可以複制到其他的地方:
- 可以看到裡面都是普通的 python 代碼
那麼怎麼運作一個已經存在的 mariom 代碼檔案?
marimo run intro.py
執行指令即可。
指令 marimo edit intro.py 可以編輯狀态打開檔案
不過,這種方式隻适合團隊之間共享。還有其他的方式嗎?
很自然想到的是釋出成 web 。
會很複雜嗎?其實你可能早就做到了。在前面的例子,當我們運作 marimo ,可以看到控制台輸出的一段資訊:
其實本身就已經是一個 web。
不要忘記一鍵三連。你的點贊、收藏、關注,是我創作的動力。