為什麼你應該停止使用Jupyter?




這篇主要想與對Python已經有些基礎的人分享,因為是時候後拆掉輔助輪了;當你想騎得更快,輔助輪只會阻礙你。

只要做數據分析、AI有關的項目,目前最火紅的程式語言當屬Python了。
而網路上許多的入門教學第一件事情就是告訴你安裝Anaconda跟Jupyter,這提供了我們舒適的入門環境,不過當我們已經不是初學者,工具也該跟著進化了。

事實上我也非常不喜歡Anaconda,它非常肥大,並且總是讓我搞不清楚我的套件到底裝到哪邊去了。通常我都使用 pipenv 與 pyenv,非常輕量、直覺

積木式的程式區塊

Jupyter將程式碼使用區塊隔開,你可以任意執行每一個區塊,但是問題隨之而來,執行的區塊被讀進記憶體,但是在你變動區塊後,記憶體裡面的資料沒有改動,這樣可能使你的在debug的時候發生問題

原本的程式

變動後將第一行刪除,變數資料依然存在

看起來似乎沒什麼,但是當你的程式邏輯越來越複雜,也使你的環境愈發髒亂。

甚至有幾次我改變了我的副程式,但是我根本不確定目前使用的是變更前還是變更後的副程式。

困難的GIT版控

Jupyter使用了json結構儲存你的程式碼和一些其他資訊

這其實非常不利於你使用git進行版控,每一次輸出變動,都會造成git改變,也沒有辦法使用git進行合作開發,一想到合併衝突就頭痛😨

沒有辦法直接引入.ipynb

好吧,的確有套件或指令可以輔助你做這件事,但是並沒有讓這件事情變得簡單

https://stackoverflow.com/questions/20186344/ipynb-import-another-ipynb-file

比較理想、好維護的架構應該是

- main.py
- requments.txt
- lib/
    - foo/
        - __init__.py
        ...
    - bar/
        - __init__.py
        ...

當你的程式變得複雜,你不會想要想將所有東西擠在同一支檔案的

結尾

說了這麼多Jupyter還是有它的優點,作為教學或是展示用途或許不錯,但是它並不適合用做開發,當你漸漸熟悉Python之後,這些特性將會成為絆腳石,如果不拋開它,將無法向前邁進

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料