Python開發環境—— jupyter Notebook 安裝使用

  • 2019 年 12 月 4 日
  • 筆記

前篇學習爬蟲的基礎介紹中,推薦了 Python 的科學計算髮行版本 Anaconda,其中集成了一個非常好用的Python開發工具—— jupyter Notebook

這篇說一下 Linux 下配置一個 Python 的 jupyter Notebook並可以外網訪問進行開發的方法,這樣就可以隨時輕鬆的使用 jupyter Notebook進行pythob的開發學習,十分方便。

安裝 Anaconda

這一部分上一篇已經說過了,這裡再說一下。

anaconda 官網 – 是Python的一個科學計算的發行版。

這裡以官方最新版本(18/1/10)3-5.0.1為例,通過安裝腳本安裝(Ubuntu環境)。

事實上,win下的安裝更為簡單,也可以配合PyCharm食用更佳。

因為資源在國外,所以下載速度很慢,可以使用清華大學鏡像源

$ wget  https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.1-Linux-x86_64.sh  $ bash Anaconda3-5.0.1-Linux-x86_64.sh

下載並執行腳本後,按照提示逐步安裝。

注意Anacondajupyter Notebook 在Linux環境下都不推薦使用root權限,因此最好使用其他用戶進行安裝。

配置 jupyter Notebook

生成一個 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

生成密碼

如果要外網訪問 jupyter Notebook 則需要一個密碼,這裡推薦直接生成的方法

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

使用 vim 或其他的編輯器打開文件,複製 " " 中的內容,將其放入後面需要修改的配置文件中

修改配置

在 jupyter_notebook_config.py 中找到下面的行,取消注釋並修改。

c.NotebookApp.ip='*'  c.NotebookApp.password = u'sha:ce...剛才複製的那個密文'  c.NotebookApp.open_browser = False  c.NotebookApp.port =8888 #可自行指定一個端口, 訪問時使用該端口

提示: 可以使用 vi/vim 的查找指令,參看——Vim勉強入個門

以上設置完以後就可以在服務器上直接輸入 jupyter notebook 啟動, root 用戶使用 jupyter notebook --allow-root

常見錯誤提示

正常進入 jupyter notebook 登陸後提示404

解決方法,更換啟動指令時的目錄,然後重新啟動。

創建新項目出錯 Unexpected error while saving file: Untitled.ipynb [Errno 13]

給予指定目錄可寫入權限(推薦變更所有者為當前用戶,若未生效則給與755/777所有用戶權限)

$ sudo chown raphael /home/raphael/ -R  $ sudo chmod 755 /home/raphael/.local

重新安裝到Docker

安裝完成之後,發現關閉當前 session 後, jupyter notebook 就會退出,於是我第一個想到的方法是傳統的 screen ,但是轉念一想,為什麼不使用 Docker 呢?

整理一下思路,安裝流程應該是,基於 ubuntu 鏡像創建容器,安裝 Anaconda (需要注意root權限),配置 jupyter notebook ,指定端口,外網訪問並使用。然而實際上並不需要這麼複雜!

為啥捏~( ̄▽ ̄)~*?因為 anaconda 官方給用戶提供了 Docker 鏡像,地址 continuumio/anaconda3

So,let』s do this!

$ docker pull continuumio/anaconda3  $ docker run -i -t continuumio/anaconda3 /bin/bash  $ docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"

兩天推薦的啟動指令,一個是直接啟動 anaconda3,而最後一條指令是啟動容器並啟動 jupyter notebook

執行最後條指令,發現提示root權限問題,加上 --allow-root 試試,因為本身就是只運行 anaconda3jupyter notebook 的容器,不存在其他用戶使用的情況,所以也就無所謂。

如上圖中,暴露了 token ,輸入上述地址可以直接打開,或者直接訪問,然後輸入 token 當然,也可以使用密碼,大家自行按照使用需求來解決。