派玩python之自部署JupyterLab
序言
Python语言以敏捷易用著称,可以帮助我们快速完成很多突发工作。此外在统计分析,机器学习使用也非常广泛。可以说就像每个家庭都要备一把瑞士军刀一样, 如果能够有一个开箱即用的Python运行环境能够随时随地使用,就是太好不过了。
对于追求效率选择Python的人来说, 安装Python,调整环境变量的步骤都想免除。
这不, Jupyter的出现很好解决了这个问题。 它提供了免费即用的浏览器就能用执行容器,https://jupyter.org/try
这样就好了? 当然没有, 上面也说了,瑞士军刀要放家里。况且免费容器解一时之急,无法保证长期稳定使用。既然家中有树莓派,当然要自部署(self-hosted)了。
以下自部署使用通用方案,不仅适合树莓派,也适合其他可以运行Docker容器的任何平台,不限NAS,PC等。
正题
- 安装Docker容器和docker-compose(略)
因为网上资源较多, 这里不赘述。 关于树莓派安装Ubuntu64的可以看之前文章
心急的用户直接
docker run -p 8888:8888 jupyter/scipy-notebook
想使用docker-compose规范化部署的继续往下看。
- 编辑docker-compose.yml文件
juypter官方已经给出了Docker镜像, 我们直接使用即可。含AMD64和ARM64两个版本, 所以树莓派安装Ubuntu64是多么明智。 ARM64是最近两个月才出来,感谢一下。 但是注意ARM64只支持到jupyter/scipy-notebook
这一层, 在下面Tensorflow和Spark过于庞大不太适合移动端了。
version: '3.1'
services:
jellyfin:
image: jupyter/scipy-notebook:latest
restart: "unless-stopped"
container_name: jupyter
ports:
- 8888:8888
environment:
- "JUPYTER_ENABLE_LAB=yes"
- "RESTARTABLE=yes"
command: start-notebook.sh --NotebookApp.password='sha1:6fc67477a931:5bfac3b859fb0ebca59703588a8c844cd7129ee5'
volumes:
- /your/path/on/the/host/work:/home/jovyan/work
其中password后面的混淆串,需要用IPython.lib.passwd()
生成。它在包ipython里,因此在安装了里面执行即可。下面是在命令行执行的例子。
pip install ipython
python -c "import IPython;print(IPython.lib.passwd())"
此外再根据情况修改 volumes
的目录, 保存文件名docker-compose.yml
如果不需要jupyter lab, 只需要jupyter notebook, 将文件中JUPYTER_ENABLE_LAB=yes
注释或删除。
- 执行和访问
在上述文件目录下执行docker-compose up -d
完成。访问 http://ip:8888/lab 使用。输入上面混淆前的密码就可以登入。 如图。
到此安装完成。 此时在宿主机(host)上的work
目录能够访问到jupyter lab工作目录,实现文件互通。进而,无论在host上进行git clone还是使用jupyter lab的Terminal使用git进行代码开发和同步都是可以的。
4.conda环境隔离和juptyer联动
当你开始开发, 有时候需要不同版本python,或者不同环境隔离时,就需要conda了。scipy版本镜像已经默认安装了conda,见图1右侧。默认在base
环境。现在我们尝试让jupyterlab使用python3.6版本。在jupyter中,这个叫内核(kernel)。下面开始
首先像正常使用conda一样没区别, 创建一个新环境并启用,命令如下:
conda create -n python3.6 python=3.6 ipykernel
conda activate python3.6
上面顺带安装了ipykernel
包,是为了将这个环境安装到jupyter。错过了切换后执行pip install ipykernel
是一样的。
现在执行命令
python -m ipykernel install --user --name Python3.6 --display-name "Python 3.6"
成功后关闭打开或者刷新一下jupyterlab页面就可以了, 不需要重启docker实例。点开ipynb文件右上角的kernel,发现已经出现了。如下图
结束
本文全部内容到此结束, 下回介绍如何使用远程kernel,实现在树莓派使用jupyter notebook当作IDE开发, 运行放在远程算力强劲的机器上。