IPython 和 Jupyter
IPython 通常指的是一個 Python REPL(交互式解釋器) shell。提供了遠比 Python shell 強大的 shell 環境。IPython 是 Iteractive Python shell的縮寫。 Notebook 是一個基于 IPython 的 web 應用。
截止 IPython 3.0 ,IPython 變得越來越臃腫,因此, IPython 4.x 后,IPython被分離成為了IPython kernel's Jupyter(IPython shell combined with jupyter kernel) 和Jupyter subprojects ,Notebook 是 Jupyter 的一個 subproject 。官方將此稱為The Big Split?。#reference-The Big Split?
IPython 把與語言無關(language-agnostic)的 components 和 Python 解釋器剝離,獨立為Jupyter發行。因此,Jupyter 可以和 Python 之外的解析器結合,提供新的、強大的服務。比如 Ruby REPL 環境 IRuby 和 Julia REPL 環境 IJulia。
因此,Jupyter 和 IPyhon 指代同一個項目, Jupyter 特指 Ipython4 后的, 非python kernel框架。
Jupyter Notebook已經逐漸取代IDE成為了多平臺上寫簡單Python腳本或應用的幾家選擇。
Jupyter Notebook可以通過pip/pip3安裝:
sudopip3 installjupyter
然后在目標文件夾目錄下,輸入指令jupyter notebook開啟服務,可在瀏覽器地址localhost:8888中訪問主頁
允許遠程訪問
我之前在訓練一些簡單的svm模型的時候,因為數據量大,訓練時間慢,導致自己的macbook在訓練過程中一直無法做別的事情,就動了在遠程Linux虛擬機上裝一套Jupyter Notebook然后將耗時很長的訓練操作放在遠程機器上做。
在本地,我們訪問localhost:8888就能看到Jupyter Notebook的本地主頁,但是在遠程訪問中,并不能直接這么做。因此需要以下一些操作:
1. 生成一個 notebook 配置文件
默認情況下,配置文件 ~/.jupyter/jupyter_notebook_config.py 并不存在,需要自行創建。使用下列命令生成配置文件:
jupyter notebook --generate-config
如果是 root 用戶執行上面的命令,會發生一個問題:
Running as root it not recommended.
Use --allow-root to bypass.
提示信息很明顯,root 用戶執行時需要加上 –allow-root 選項。
jupyter notebook --generate-config --allow-config
執行成功后,會出現下面的信息:
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
2. 生成密碼
自動生成
從 jupyter notebook 5.0 版本開始,提供了一個命令來設置密碼:jupyter notebook password,生成的密碼存儲在 jupyter_notebook_config.json。
$ jupyter notebook password
Enter password: ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json
手動生成
除了使用提供的命令,也可以通過手動安裝,我是使用的手動安裝,因為jupyter notebook password 出來一堆內容,沒耐心看。打開 ipython 執行下面內容:
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed 這一串就是要在 jupyter_notebook_config.py 添加的密碼。
c.NotebookApp.password = \
u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
3. 修改配置文件
在 jupyter_notebook_config.py 中找到下面的行,取消注釋并修改。
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha:ce... # 剛才復制的那個密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 # 可自行指定一個端口, 訪問時使用該端口
以上設置完以后就可以在服務器上啟動 jupyter notebook,jupyter notebook, root 用戶使用 jupyter notebook --allow-root。打開 IP:指定的端口(默認為8888), 輸入密碼就可以訪問了。
同時支持python2和python3
先安裝Python2和Python3的ipython notebook
pip2 installipython notebook
pip3 installipython notebook
分別用各自的ipython執行下面的指令
ipython2 kernelspec install-self
ipython3 kernelspec install-self
就能在ipython notebook里面同時使用兩種版本的Python了