Jetson Nano Jetson Nano 安装 Jupyter Lab
最近发布了Jetpack 4.3 ,添加了不少新功能和优化了系统。创客出手小编,迫不及待地刷了SD卡,进入系统后发现没有像Jetbot的image那样预安装jupyter lab,这么好用的Python网页编辑器怎么能没有呢?于是,就开启了折腾的一天。
本文经过资料搜集,翻译等再加上自己踩坑填坑,实践的理解, 如果有遗漏错误的地方请指正。
创客出手,现在就分享安装Jupyter lab的过程。
1,先安装一些依赖
sudo apt install nodejs npm
2,安装pip3包管理器
sudo apt install python3-pip
3,安装jupter lab
pip3 install jupyter jupyterlab
4,重启
sudo reboot
5,启动jupyter lab
现在,已经安装好。
在命令行输入jupyter lab命令, 即可启动jupyter lab。
但是会出现两个问题:
-
1,浏览器输入 localhost:8888 可以访问Jupyter lab,但仅仅本机能访问,局域网其他主机(终端)均无法访问;
-
2,会提示你输入密码或者token,token这么长哪里记得住,所有我们还是需要设置一下密码。
先关闭已经启动的Jupyter lab进程,操作方法是,在当前终端窗口中按 ctrl+c
现在开始解决以上问题:
6,生成jupyter lab 配置文件
jupyter lab --generate-config
输入命令后,会看到类似的输出信息:
会提示配置文件保存在以下路径:
Writing default config to: /home/bbot/.jupyter/jupyter_notebook_config.py其中,路径上的“bbot”是我们的用户名,这个位置的信息会根据你设置的用户名有所不同。
7,使用编辑器,编辑jupyter lab配置文件
我比较喜欢用nano,有大神用vi&vim的,只要能编辑就好,创客出手输入以下命令:
nano /home/bbot/.jupyter/jupyter_notebook_config.py
找到以下两项参数,去掉前面的#,并修改成如下参数即可
...
c.NotebookApp.allow_origin = '*' # allow all origins
#或者
c.ServerApp.allow_origin = '*' # allow all origins
...
c.NotebookApp.ip = '0.0.0.0' # listen on all IPs
#或者
c.ServerApp.ip = '0.0.0.0'
按 ctrl +o 保存,按ctrl+x退出。
设置密码
jupyter-lab password
这时,会见到
Enter password: ,这时输入你的密码按回车(此时命令行上不会出现任何东西,这是正常现象)
之后,会见到
Verify password: ,再次输入你的密码按回车,验证两次输入是否一致(此时命令行上不会出现任何东西,这是正常现象)
再之后,会提示密码已经保存到配置文件中
Wrote hashed password to /home/bbot/.jupyter/jupyter_notebook_config.json
最后,再次使用jupyter lab 命令。
现在,局域网的主机也可以访问,输入Jetson nano 的ip地址加端口8888,例如:http://ipaddress:8888 ,提示输入密码,输入你设置的密码即可。
本文参考资料: Jupyuter lab文档:https://jupyterlab.readthedocs.io/en/stable/index.html Nvidia Developer Forums:https://devtalk.nvidia.com/default/topic/1049646/jetson-nano/jupyter-notebook-in-jetson-nano/
为什么选择Jupyter Lab而不是Jupyter Notebook?
在上面的教程中我们安装的是Jupyter Lab,而不是传统的Jupyter Notebook,这是有原因的:
- 界面更现代:Jupyter Lab提供了类似IDE的多标签页界面,可以同时打开代码文件、终端、Markdown文件等
- 更好的扩展性:支持更丰富的插件生态系统,可以通过插件管理器安装各种扩展
- 支持更多文件类型:除了.ipynb笔记本,还支持CSV查看器、JSON编辑器、图片预览等
- 未来方向:Jupyter Lab是Jupyter项目的重点发展方向,传统的Notebook界面将逐步被取代
设置开机自动启动Jupyter Lab
每次都要手动输入jupyter lab命令来启动很麻烦,我们可以创建一个systemd服务让它开机自动运行。
首先,创建服务文件:
sudo nano /etc/systemd/system/jupyter.service
写入以下内容(注意将bbot替换为你的用户名):
[Unit]
Description=Jupyter Lab Server
After=network.target
[Service]
Type=simple
User=bbot
ExecStart=/home/bbot/.local/bin/jupyter lab --config=/home/bbot/.jupyter/jupyter_notebook_config.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
保存后,启用并启动服务:
# 重新加载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable jupyter
# 立即启动服务
sudo systemctl start jupyter
# 查看服务状态
sudo systemctl status jupyter
现在重启Jetson Nano后,Jupyter Lab会自动在后台运行,你可以直接通过浏览器访问。
远程访问方案
如果你在外出时需要远程访问Jetson Nano上的Jupyter Lab,有以下几种方案:
方案一:SSH隧道(推荐,安全)
在你的本地电脑上执行:
ssh -L 8888:localhost:8888 bbot@你的Jetson_IP地址
然后在本地浏览器打开http://localhost:8888即可访问。这种方式所有流量都通过SSH加密,非常安全。
方案二:使用ngrok(无需公网IP)
ngrok可以将本地端口暴露到公网:
# 安装ngrok
sudo snap install ngrok
# 启动隧道,映射8888端口
ngrok http 8888
ngrok会给你一个公网地址(类似https://xxxx.ngrok.io),在任何设备上访问这个地址就能连接你的Jupyter Lab。
方案三:使用frp内网穿透
如果你有自己的云服务器,可以使用frp实现内网穿透,这种方式更稳定,适合长期使用。
有用的Jupyter扩展推荐
Jupyter Lab支持丰富的扩展,以下是一些实用的推荐:
# 安装扩展管理器(Jupyter Lab 3.x+已内置)
# 安装代码格式化扩展
pip install jupyterlab_code_formatter black isort
# 安装主题扩展
pip install jupyterlab-materialdarker
# 安装git扩展,方便在Jupyter中管理代码版本
pip install jupyterlab-git
# 安装drawio绘图扩展
pip install jupyterlab-drawio
安装完成后重启Jupyter Lab,可以在左侧边栏看到新增加的Git面板、Drawio绘图工具等。
常见问题排查
问题1:端口冲突(Address already in use)
如果启动时提示Port 8888 is already in use,可能是之前的Jupyter进程没有正常关闭:
# 查找占用8888端口的进程
lsof -i :8888
# 或者用netstat查看
sudo netstat -tlnp | grep 8888
# 杀掉对应进程
kill -9 进程PID
也可以在配置文件中修改端口号:
c.ServerApp.port = 8889 # 改为其他端口
问题2:内存不足导致内核崩溃
Jetson Nano只有4GB内存,运行大型深度学习模型时可能导致Jupyter内核崩溃。解决方法:
# 增加swap空间(需要至少8GB的SD卡/硬盘空间)
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 将swap写入fstab使其永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
问题3:安装dlib等包时编译失败
Jetson Nano上安装一些需要编译的Python包时可能报错,确保安装了必要的编译工具:
sudo apt install build-essential cmake
sudo apt install libopenblas-dev liblapack-dev libjpeg-dev
希望这些补充内容能帮助你更好地使用Jupyter Lab进行开发!


