(Updated on 2018-08-15)
Jupyter Notebook (前身ipython notebook)是個很好用的coding工具,它可以:
- 用作快速prototyping:分段execute、即時修改memory中的variables
- 用作寫報告:內容可以包括code、執行結果、圖表等等
以下會如何解釋分別以pip
和conda
處理 Jupyter 的 python environment。
1. 安裝Jupyter Notebook
如果你已安裝Jupyter,可以跳到下一部分。
以pip安裝
# python2
$ pip install --upgrade pip
$ pip install jupyter
# python3
$ brew install python3 # macOS
$ pip3 install --upgrade pip
$ pip3 install jupyter
以Conda安裝
Conda 是一個package manager + environment manager,就像是pip + virtualenv,可以裝package,也可以用作管理python的versions。
安裝Conda
Anaconda版本包含了>720個常用的packages,如果不想安裝太多可以選擇先裝Miniconda,只包括conda的dependencies,日後可以conda install anaconda
。
(conda不是本篇重點所以先輕輕帶過了)
安裝Jupyter
Anaconda已經自帶了Jupyter,如果你裝了Miniconda,可以執行conda install jupyter
安裝。
2. 加入python2 / python3 kernel
Kernel 決定了Jupyter上的code用甚麼去execute,例如可以是python2、python3,甚至是其他語言。
打開Jupyter看一看: jupyter notebook
這時browser應該已經出現了Jupyter的介面,右上角按New可以新增notebook,應該可以看到kernel的選擇。
因為我安裝的conda是python2,所以只有一個python2的kernel。
使用ipykernel
歷史:Jupyter原名叫
ipython notebook
,之後分拆成為獨立工具,但只代表web UI的部分,背後其實依然依賴ipython來執行code。
所以要改動Jupyter的kernel,就代表需要改動ipython的kernel,而ipython提供了ipykernel
的工具來管理kernel。
ipykernel install
的用法:
$ python -m ipykernel install --help
usage: __main__.py [-h] [--user] [--name NAME] [--display-name DISPLAY_NAME]
[--prefix PREFIX]
Install the IPython kernel spec.
optional arguments:
-h, --help show this help message and exit
--user Install for the current user instead of system-wide
--name NAME Specify a name for the kernelspec. This is needed to
have multiple IPython kernels at the same time.
--display-name DISPLAY_NAME
Specify the display name for the kernelspec. This is
helpful when you have multiple IPython kernels.
--prefix PREFIX Specify an install prefix for the kernelspec. This is
needed to install into a non-default location, such as
a conda/virtual-env.
修改使用ipykernel
(a) 以pip安裝python3
- 先安裝
python3
,例如brew install python3
。 - 安裝ipykernel到pip3
python3 -m pip install ipykernel
- 使用pip3安裝python3到jupyter
python3 -m ipykernel install --user
現在打開jupyter notebook
,應該已經有python2
和python3
兩個kernel了。
(b) 以conda安裝python3
- 新增一個python3 environment (或python2),conda會自動順便幫你安裝python3
- 安裝這個env的kernel到jupyter
# conda
$ conda create -n py36 python=3.6 ipykernel # 新增名為py36的python3.6 environment,在裡面安裝ipykernel
$ source activate py36 # 進入env (activate是conda提供的command)
$ python -m ipykernel install --user --name py36 # 安裝kernel
$ source deactivate # 離開env
現在打開jupyter notebook
,應該已經有python2
和py36
兩個kernel了。
管理不同env的kernel
可能你有兩個project的virtual environment,各自都在使用python 2.7,那麼在jupyter就要用不同命名去分辨兩個env。
source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
source activate other-env
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"
--name
是jupyter內部用的env名稱,如果已存在,會直接overwrite重覆的env--display-name
就是顯示在jupyter介面的名稱
下筆時的versions:
- conda 4.3.30
- python 2.7.13