|
Jetson Nano 安装 Jupyter Lab

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进行开发!