Jupyter Notebook(此前被稱爲 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。
Jupyter Notebook 的本質是一個 Web 應用程序,便於建立和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等;
是一款很是好用的基於web方式使用python的工具;
支持windows 與linux系統,本次以ubuntu 16.04 python3.5.2爲例,安裝演示;
相關配置及更高級的玩法請參考官方文檔html
以上的操做是針對本機的python3操做,若是想在虛擬的python環境中操做請參考搭建python虛擬環境
其餘的步驟是 同樣的;node
一、pip安裝python
sudo python3 -m pip install --upgrade pip sudo python3 -m pip install jupyter
二、簡單使用
默認安裝好後直接在命令行裏輸入$ jupyter notebook
相似以下圖:
如上圖,新建-->Python3 建立以下圖交互式帶提示的python命令行
輸入print("Hellow world") 點運行便可執行看到效果;linux
新建終端時,直接以登陸系統身份登陸系統終端如圖:
web
至次jupyter notebook的簡單安裝使用就完成了,沒錯就是這麼簡單~
然而這麼好的工具,這麼方便的操做只能運行在本地?若是在局域網或端口映射後能在外面操做,經過密碼登陸;豈不是很完美?查看了官方網站教程,別說還真有;下面就配置下把jupyter notebook開放在本地的任何接口上,而且配置https形式,這樣傳輸就安全啦~shell
一、配置密碼編程
$ jupyter notebook password Enter password: **** Verify password: ****
以上操做會在個人家目錄下生成 /home/san/.jupyter/jupyter_notebook_config.json
文件,密碼以hash保存以下:json
$ /home/san/.jupyter/jupyter_notebook_config.json { "NotebookApp": { "password": "sha1:74432c61ae9b:26c35e70239jfe7e3dc4b177d140d4ac7f560e1f" } }
些時結束以前的jupyter notebook實例再次運行,會提示輸入密碼,如圖:
此時只有輸入正確的密碼後才能正常登陸使用jupyter 啦!ubuntu
二、偵聽非本地接口
默認出於安全jupyter只運行偵聽在本地,想把這麼好的功能放在網絡上使用須要生成添加配置文件windows
$ jupyter notebook --generate-config
運行後會在家目錄.jupyter/下生成jupyter_notebook_config.py文件
修改內容以下:
c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.open_browser = False c.NotebookApp.password = "sha1:74432c61ae9b:26c35e70239jfe7e3dc4b177d140d4ac7f560e1f" c.NotebookApp.port = 8888
注意:按官方的c.NotebookApp.ip = '*' 報錯,換成0.0.0.0則能夠
能夠看到不只能夠自定義偵聽地址,還能夠修改偵聽端口;
$ netstat -ntpul |grep python3 tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2403/python3
此時就能夠經過本地的ip或loclahost :8888訪問啦
三、jupyter配置https
建立私鑰並自籤:
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
運行以上命令以下須要填寫相關信息如圖:
以https方式啓動:
$ jupyter notebook --certfile=mycert.pem --keyfile mykey.key [I 13:30:22.165 NotebookApp] 啓動notebooks 在本地路徑: /home/dongyc/ipython [I 13:30:22.165 NotebookApp] 本程序運行在: https://(san-Vostro-3660 or 127.0.0.1):8888/ [I 13:30:22.165 NotebookApp] 使用control-c中止此服務器並關閉全部內核(兩次跳過確認).
注意:證書文件須要絕對路徑;
此時能夠使用https://10.8.11.65:8888 或https://localhost:8888進行訪問啦 如圖:
到這裏jupyter notebook基本配置完成了,但有一個問題,每次啓動jupyter都要切換到一個指定目錄(就是上圖中文件列出來的內容所在目錄);並且還要佔用一個終端;
仍是搞一個後臺服務,開機自動運行吧,如下的內容是官方沒有的,本人本身搗鼓的;
四、jupyter服務
#!/bin/bash # author: by san at 20180929 ### BEGIN INIT INFO # Provides: jupyter # Required-Start: $syslog $remote_fs # Required-Stop: $syslog $remote_fs # Should-Start: $local_fs # Should-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: jupyter notebook deamon # Description: jupyter notebook with https deamon ### END INIT INFO . /home/san/functions # 這個相似redhat系列上的/etc/init.d/functions shell庫 你的系統自行找,如找不到請聯繫我 prog=jupyter pidfile=${PIDFILE-/tmp/jupyter.pid} lockfile=${LOCKFILE-/tmp/jupyter} jupyter="/usr/local/bin/jupyter" # 若是是虛擬python環境請填寫正確的路徑 RETVAL=0 START(){ if [ ! -f ${pidfile} ]; then cd /home/san/ipython echo -n $"Stopping jupyter notebook:" nohup ${jupyter} notebook --certfile=/home/san/mycert.pem --keyfile /home/san/mykey.key >/tmp/jupyter.log 2>&1 & [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup" jupyter_pid=$(ps aux |grep jupyter |grep -v grep|awk '{print $2}') echo $jupyter_pid >$pidfile RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL else status -p ${pidfile} exit 0 fi } STOP(){ echo -n $"Stopping jupyter notebook:" nohup kill -15 $(ps aux |grep jupyter |grep -v grep|awk '{print $2}') >/dev/null 2>&1 & [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup" echo [ -f ${pidfile} ] && rm -rf ${pidfile} [ -f ${lockfile} ] && rm -rf ${lockfile} } case $1 in start) START ;; stop) STOP ;; restart) STOP START ;; status) status -p ${pidfile} $prog ${jupyter} notebook list RETVAL=$? ;; *) echo "USAGE:start|stop|restart" ;; esac
添加可執行權限
$ chmod +x /etc/init.d/jupyter
測試腳本 如圖:
能夠發現腳本能夠執行;會自動讀取當前登陸系統用戶的家目錄下.jupyter下的配置文件;官方說把密鑰和簽名證書配置到配置文件中,但我測試下來找不到證書,因此把證書當啓動參數放到,服務腳本中了,這是正常的;
系統重啓會自動啓動jupyter notebook 偵聽在8888上,系統關閉時,會自動關閉jupyter服務; upyter notebook能夠運行多實例;即默認隨機啓動偵聽在8888 再次在終端上執行時會偵聽在8889端口 如圖:
此時你會發現 一臺服務器能夠開多個實例,給多我的測試使用~是否是很方便很好用?趕忙試試吧~