我最近想搭个 Jupyter Lab, 主要出于这几个原因:
- 调试 Windkessel 模型:需要一个方便画图、能轻松分享结果的环境(受够了在本地画完图还要到处传文件😂)
- 学习 Pyvista 可视化:想在网页上直接展示计算结果,pyvista 的 3D 可视化效果很酷炫,以后通过代码可重复画图
- 学习 FEniCSx :正在学这个有限元分析工具,Jupyter 的交互特性很适合边学边试
安装 Jupyter 和 pyvista
1
2
3
4
| pip install 'jupyterlab>=3' ipywidgets 'pyvista[all,trame]'
pip install notebook
jupyter notebook password
jupyter notebook --port=9202 --ip=0.0.0.0
|
然后设置外网访问, 需要注意, 在 Nginx Proxy Manager 打开 Websocket Support 才能执行代码,否则只能写代码。

运行pyvista
可以选择前端显示或者后端显示。

Jupyter执行环境切换
1
| python -m venv circadapt
|
1
2
3
4
| # 假设已经激活 python 环境
pip3 install ipykernel
python -m ipykernel install --user --name=spack_fenics --display-name="FEniCSx Spack"
jupyter kernelspec uninstall fenics_spack
|
系统默认启动
我通过ssh登陆命令执行脚本,尽可能与命令行执行命令的环境相同
1
2
3
4
5
6
| sudo vi /etc/systemd/system/manyservices.service
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
sudo systemctl enable manyservices.service
# sudo systemctl daemon-reload
sudo systemctl restart manyservices.service
sudo journalctl -u manyservices.service -n 100
|
1
| ssh fenics@localhost "export DISPLAY=:99.0 && source ~/pyvenv/bin/activate && jupyter notebook --port=9202 --ip=0.0.0.0 --notebook-dir=/home/fenics/jupyter"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| [Unit]
Description=many services
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
# 指定运行用户和组
User=fenics
Group=fenics
# 启动命令
Restart=on-failure
RestartSec=5s
ExecStart=/bin/bash /home/fenics/start_services.sh
[Install]
WantedBy=multi-user.target
|