2020年9月26日 星期六

Jupyter Notebook使用筆記

雖然使用Python與Anaconda已經好一陣子
不過我大概是今年4月左右才開始使用到Jupyter Notebook
為什麼這麼晚才碰呢?理由無他,就只是沒人教而已
反正用終端機(Terminal)模式,還是用notepad++或visual studio code寫完再跑都能跑
對我來說並不是絕對必要學會
只是一直在網路上找他人寫好的範例才發現不少人用這個工具
那就來試用用看吧

一試之下
好用,真的好用,尤其是在寫範例與學習的階段上,這東西真是超級好用
真是,唉~~~相見恨晚呀
你可以一段,一段地寫,然後分段去跑出你要的結果

而且運行完後,想修改後再重跑時
不像之前用Terminal模式跑,要整段重新輸入或從別的地方貼過來

你只要回到那格,修改,就可以再跑一次
所以非常適合對人進行教學,或是自學跑範例
同時,既然是跟Anaconda綁一起的,當然是可以配合跑虛擬環境
實際運作又只需要瀏覽器就可以編輯,真是輕巧好用

那4月就開始用,為什麼要到快年底才寫這一篇介紹
因為,Jupyter Notebook使用虛擬環境設定之前是設定成功了,但忘了記錄無法重現
伴隨著工作上暫時不用建新的虛擬環境,就一直放置這件事
一直到最近必須再開個新虛擬環境才不得不再想辦法解決這個問題
現在解決了,就趕快寫這篇,把步驟記錄下來
唉~~真的是老了,還是要靠筆記了
下面就是設定與注意事項

首先一般使用
這在在裝好Anaconda時,就幫你設定好了
直接點了選單裡的Jupyter Notebook(Anaconda3)就可以用
這個環境是直接搭配base這個環境的設定
如果我另外建一個叫TensorFlow的環境要在Jupyter Notebook裡用時
那就需要另外的設定了

大部分網路上找到的設定都是說,安裝完成ipykernel後就行了
像這個在不同的虛擬環境("environments")使用"jupyter"
跟這個在 Jupyter 使用虛擬 Python 環境的第一招
只是神奇的是,我都不能用
到底是之前anaconda安裝的問題還是什麼狀況
設定完成後,看起來正常,但是就是開不起來
以設定好一組名為myenv的環境來說
明明可以從jupyter kernel spec list裡看到設定好的環境
也可以從jupyeter notebook裡直接看到可以使用

但就是執行時,會看到python kernel一直在重啟,什麼程式也執行不了



解決的方法很簡單
就是在 Jupyter 使用虛擬 Python 環境的第二招,在虛擬環境中完整安裝jupyter notebook
只要裝好了jupyter,一切就正常了
以下是完整的流程
首先使用conda設定新的虛擬環境myenv
conda create --name myenv python=3.6
進入myenv虛擬環境,直接安裝jupyter套件
conda install jupyter
安裝完成後,再執行把虛擬環境加入jupyter notebook的指令
python -m ipykernel install --name myenv
這時候就成功啦
這時windows主選單就會出現
Jupyter Notebook(myenv)的捷徑

使用這個開啟Jupyter Notebook的話
執行後開啟Terminal模式,就會是myenv的環境了

那如果要移除這個環境呢?
首先要從Jupyter裡拿掉
為了避免錯誤產生,先查目前有哪幾個環境有跟Jupyter連動
jupyter kernelspec list
就可以看到目前的狀況
接著執行
jupyter kernelspec remove myenv
就可以斷開連動,再也不會在Jupyter裡看到myenv的部分

不過主選單的連結還是存在,要處理掉這個部分
最後再執行
conda remove --name myenv --all
把整個虛擬環境都移除掉,那在主選單裡的連結也會消失

這個工具好像很萬能
其實不然
先不提沒辦法做到Visual Studio Code等IDE能做到類別裡的物件與函式提示這一功能
Jupyter套件在使用asyncio套件時就遇到問題了
asyncio.run() fails in the notebook
要解決,如網址中Carreau所提,要加入nest-async-io的套件協助
當初在學習websockets函式庫時,Jupyter Notebook真的幫了不少的忙啊

沒有留言: