官網如是介紹JupyterLab: JupyterLab is the next-generation web-based user interface for Project Jupyter。可見,Jupyter Lab是Jupyter的下一代計劃,其包含了Jupyter Notebook所有功能,可作爲一種基於web的集成開發環境,你可以使用它編寫notebook、操作終端、編輯markdown文本、查看文本文件及圖片等功能。本文將介紹在Anaconda中利用jupyter搭建個性化Python、R語言遠程編程環境。
本篇博客的敘述適合對Anaconda的使用有一定基礎的同學,關於Anconda常見基本操作,請參考官方文檔或則也許你可以參考我之前的博客Anaconda常用命令
安裝Anaconda
刪繁就簡就是我的個人原則,所以安裝Anaconda, 我選擇Miniconda, 它是Anaconda的最小化版本,只包含conda、python以及一些必須的包。進入Miniconda選擇適合你的版本即可下載安裝:
# 以下所有安裝演示均在terminal中進行
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 下載linux 64bit 版本
$ /bin/bash Miniconda3-latest-Linux-x86_64.sh # 啓動安裝,接下來按照提示完成即可
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> no # 建議不init,其他yes就好
接下來在.bashrc
中添加環境變量,並加載環境變量:
echo 'export PATH="~/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
conda info --envs # 測試以下conda
安裝配置jupyter lab
它的安裝很簡單啦,官網列出了很多安裝方式,但是以我的經驗和踩坑經歷,大多數的時候,儘量別在base環境下安裝包,更加明智的選擇是按照你的工作類型、項目創建不同的虛擬環境,以免一個環境被破壞,全盤奔潰。所以這裏我們先創建一個虛擬環境,再進行各種包的安裝以及環境配置。
conda create --name common python=3.6.8
source activate common
pip install jupyterlab # 推薦在conda中使用pip安裝各種包
下面先生成密鑰,然後再在~/.jupyter/jupyter_notebook_config.py
中修改配置文件即可:
jupyter lab --generate-config # 生成默認配置文件 ~/.jupyter/jupyter_notebook_config.py`
ipython
# --------------------------------------------------
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:c2d56265c773:e06ef2b97c94bbb014f65bd2975d43c7da12520e'
修改配置文件中的以下項:
c.NotebookApp.ip='*'
c.NotebookApp.allow_remote_access = True
c.NotebookApp.password = u'sha1:c2d56265c773:e06ef2b97c94bbb014f65bd2975d43c7da12520e'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8989 #可自行指定一個端口, 訪問時使用該端口
遠程連接jupyter lab
首先我們在遠程服務器開啓jupyter lab, 下面代碼中,nohup
可以使代碼進入後臺運行,關於更多linux命令後臺運行,請參考Linux 後臺運行程序方法總結
source activate common
nohup jupyter lab &
然後在本地使用ssh和服務器建立連接,其中-N
:SSH沒有命令要被遠程執行; -f
:SSH在後臺執行; -L
:指定port forwarding的配置:
ssh -p port -N -f -L localhost:8989:localhost:8989 username@ip
最後在本地瀏覽器中訪問:http://localhost:8989/lab 就可以啦
定製化編程環境
上面已經實現了local連接遠程服務器jupyterlab 並進行編程地功能,是不是就okay了呢?當然不是,我們知道,R語言、python的包都是不斷更新的,但是有的項目中我們需要特定的包,另一個項目又可能最新的包,如果我們需要在local使用遠程不同虛擬環境怎麼辦呢?且往下看:
R語言
默認jupyter lab使用的應該是系統的R,我們一般使用自己虛擬環境中創建的R環境,這樣不需要管理員權限就可以方便地管理自己的packages:
conda install r==3.6
which R
在R語言中安裝相關package:
> install.packages("devtools")
> devtools::install_github('IRkernel/IRkernel')
> IRkernel::installspec(name = 'ir36-common', displayname = 'R 3.6-common')
[InstallKernelSpec] Installed kernelspec ir36-common in ~/.local/share/jupyter/kernels/ir36-common
Python
類似R語言,首先需要安裝一個ipykernel,然後再安裝一個kernel到~/.local/share/jupyter/kernels
目錄下,原理一模一樣:
pip install ipykernel
python -m ipykernel install --user --name python3-commom
現在大工告成啦!使用ssh
連接遠程服務器之後,在本地瀏覽器中訪問:http://localhost:8989/lab 就可以啦,你會發現現在你可以自定義任何環境來跑你特定的任務了!
卸載conda
rm -r .conda/
rm -r miniconda3/
結語
jupyter lab是一個非常棒的交互式數據分析工具,然而受限於本機的計算能力有時候也會很卡,或則影響我們其他工作,能靈活運用好遠程資源可以解放我們的local電腦資源,提高工作效率!