1. 程式人生 > 程式設計 >Jupyter Notebook 安裝配置與使用詳解

Jupyter Notebook 安裝配置與使用詳解

本文示例環境:CentOS 7,遠端伺服器
可能的依賴:python; pip; python-devel; gcc; gcc-c++;

一、安裝(命令列操作) 如果沒有pip,要安裝pip:

安裝 setuptools

cd /tmp
wget https://pypi.python.org/packages/69/56/f0f52281b5175e3d9ca8623dadbc3b684e66350ea9e0006736194b265e99/setuptools-38.2.4.zip#md5=e8e05d4f8162c9341e1089c80f742f64  # 具體下載地址可能變更,請參見官網:https://pypi.python.org/pypi/setuptools#downloads
unzip setuptools-38.2.4.zip # 我下載的是 .zip 原始碼,所以用 unzip 解壓
cd setuptools-38.2.4/
python setup.py install

再安裝 pip

cd /tmp
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9  # 同樣,具體下載地址參考:https://pypi.python.org/pypi/pip#downloads
tar zxvf pip-9.0.1.tar.gz # 解壓
cd pip-9.0.1/
python setup.py install

安裝 jupyter notebook

如果想用 python2:

python -m pip install --upgrade pip
python -m pip install jupyter

如果報錯:

………………………………
error: command 'gcc' failed with exit status 1

試試:

sudo yum install gcc gcc-c++ python-devel

再執行

如果想用 python3:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

安裝完測試一下好不好用:

若jupyter 部署在遠端伺服器上,伺服器防火牆開啟時,埠可能不能訪問,所以加一步埠開放

firewall-cmd --zone=public --add-port=8888/tcp --permanent
success  
systemctl restart firewalld.service 

注意:如果是騰訊雲等雲伺服器,可能需要上官網管理平臺,手動配置安全組開放端口才行
然後啟動 jupyter

jupyter notebook --ip=*  # root下換成:jupyter notebook --ip=* --allow-root

命令列顯示:

jupyter notebook 正常啟動的示意圖

開啟瀏覽器,輸入url: localhost:8888,回車,瀏覽器顯示:
注意:在遠端伺服器上部署jupyter的要把 localhost 改成對應的 ip 地址

token登入介面

讓你用token登入,把上面命令列反饋的 token (倒數第二行)複製過來輸入,登入成功:

token登入成功

二、配置

上述步驟建立的 jupyter notebook 是臨時性的,沒有配置密碼、SSL、工作目錄等等,不方便也不安全。下面為需要的使用者建立專屬的配置。

注意:下文中的例子在 root 賬戶下進行,建議實際不要用 root 使用者。

配置檔案生成

如果伺服器上你的賬戶下已有預設 jupyter 使用者(的配置檔案),可以直接拷貝一份,改個名字,比如:

cd /root/.jupyter
cp jupyter_notebook_config.py jupyter_my_config.py

或者,直接自己找個任意目錄,比如 /root/my_configs,直接建立一個新檔案作為配置檔案(反正就是個文字檔案,放哪裡都行):

mkdir /root/my_configs
cd /root/my_configs
touch jupyter_notebook_config.py

再或者,賬戶下未建立預設 jupyter 配置檔案的情況下,可以自動生成:

jupyter notebook --generate-config

生成了配置檔案

現在假設我們的配置檔案是用最後一種方式建立的,我們進入目錄看看

[root@VM_157_11_centos ~]# cd /root/.jupyter/
[root@VM_157_11_centos .jupyter]# ls
jupyter_notebook_config.py
[root@VM_157_11_centos .jupyter]# 

配置檔案編輯

開啟 jupyter_notebook_config.py 檔案:

vim jupyter_notebook_config.py

可以看到全是註釋的配置說明,比較複雜,也不是都用得上,這裡我們自己寫一些重要的配置即可,在檔案開頭寫入:

c = get_config()
c.IPKernelApp.pylab = "inline"
c.NotebookApp.ip = "*"
c.NotebookAPp.open_browser = False
c.NotebookApp.password = 'sha1:b39d2445079f:9b9ab99f65150e113265cb99a841a6403aa52647'
c.NotebookApp.certfile = u'/root/.jupyter/mycert.pem'
c.NotebookApp.port= 8888
c.NotebookApp.notebook_dir = "/root/ipython"

注意1:第五行 password 填入的是<登入密碼的 sha1 加密版>,通過以下方式生成:

[root@VM_157_11_centos .jupyter]# python
Python 2.7.5 (default,Aug 4 2017,00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help","copyright","credits" or "license" for more information.
>>> from IPython.lib import passwd
>>> passwd()
Enter password: 
Verify password: 
'sha1:175e8efe8974:eacef02a2e3f959d6efdf6c93d142c7f4712f5cc'
>>> exit()
[root@VM_157_11_centos .jupyter]# 

注意2:第六行的 certfile 證書檔案可以通過下面這行命令生成(中間的互動資訊可以隨便填),注意路徑要對應上:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

注意3:第七行的 port 應該是一個未被佔用的、被防火牆允許的埠(在上面的步驟我們已經打開了 8888 埠),這裡再強調一遍(同樣的,騰訊雲等伺服器需要在官網修改安全策略):

firewall-cmd --zone=public --add-port=8888/tcp --permanent
success  # 系統反饋資訊
systemctl restart firewalld.service 

注意4:第八行的 notebook_dir 是你的文件目錄,需要自行選擇並建立(否則執行時會報錯):

mkdir /root/ipython

執行

[root@VM_157_11_centos .jupyter]# jupyter notebook --config jupyter_notebook_config.py --allow-root
[I 19:58:54.278 NotebookApp] Serving notebooks from local directory: /root/ipython
[I 19:58:54.279 NotebookApp] 0 active kernels
[I 19:58:54.279 NotebookApp] The Jupyter Notebook is running at:
[I 19:58:54.279 NotebookApp] https://[all ip addresses on your system]:8888/
[I 19:58:54.279 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 19:58:54.279 NotebookApp] No web browser found: could not locate runnable browser.

關於引數:–config 是可選的,預設會用 jupyter_notebook_config.py 檔案,如果有多個使用者配置檔案(給多個使用者分別提供 jupyter notebook),就必須要用這個命令了。–allow-root 是 root 使用者啟動 jupyter notebook 時的必須引數,實際上不建議使用 root 啟動 jupyter notebook,最好還是用其他使用者啟動,這樣在 瀏覽器端 cmd 視窗就不至於直接暴露 root 許可權。
後臺執行: 實際使用的時候我們當然會讓 jupyter notebook 在後臺一直執行著,即使我斷開 ssh 連線之後也要可以通過瀏覽器訪問。那也簡單,用 nohup 命令就可以了:

nohup jupyter notebook --config jupyter_notebook_config.py --allow-root 2>&1 > my.log & 

用該命令啟動 jupyter notebook 之後,原先列印在螢幕上行的日誌會寫入到 my.log 文字檔案中(該檔案路徑可以替換,當然完全不想要日誌的話也可以重定向到 /dev/null)。

瀏覽器端訪問

瀏覽器端的 url:https://localhost:8888
注意:localhost 可以替換成 ip/域名; https:// 不能丟,否則你會在伺服器日誌上看到下面的錯誤:

[W 20:39:48.439 NotebookApp] SSL Error on 10 ('58.59.67.94',61845): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)
[W 20:39:49.869 NotebookApp] SSL Error on 10 ('58.59.67.94',61849): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)

再注意:由於我們生成的 SSL 證書是非正式簽發的,所以Chrome等瀏覽器可能會提示“您的連線不是私密連線”之類的風險問題,這裡選“高階” – “繼續前往”就好了。

正常進入主頁

空白的主頁

點選右上角的 New 就可以建立 notebook 檔案,然後互動式的寫程式了~

三、增加 python3 核心

在主頁中,我們可以 單擊 New 然後建立 python 2 和 python 3 的 notebook 檔案,但是實際上預設只有一個 python 2 的核心(上面用 python 2 安裝的 jupyter),New 出來的 python 3 notebook 實際上還是 python 2 的,執行一下 “print 123”,不會報錯(python 3 需要 print(123) )。
已有 python 2,安裝 python 3核心:

python -m ipykernel install --user
python3 -m pip install -U ipykernel
python3 -m ipykernel install --user

這個時候再去主頁,選擇 python 3 時就可以用 python 3 的 kernel 了。

四、Jupyter Notebook 的小“坑”

這裡不定時記錄一些用的時候遇到的問題,以及解決方法。

環境變數問題:如果在程式碼內修改了環境變數,需要重啟 kernel 才能生效;
常駐記憶體既是優點也是缺點,長期不用的話要自己主動去把 Running 中的項 Shutdown;
待續。

到此這篇關於Jupyter Notebook 安裝配置與使用詳解的文章就介紹到這了,更多相關Jupyter Notebook 安裝配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!