相同Python版本下SSH会话无法导入Jupyter可用库的问题排查
问题原因及解决方案
核心原因
SSH会话和Jupyter环境使用的Python模块搜索路径不一致,Adafruit_MotorHAT库没有安装在SSH会话的Python能搜索到的路径下,常见触发场景如下:
- Jupyter内核绑定了带该库的虚拟环境,SSH下默认启动的是全局Python,没有加载对应虚拟环境
- 库安装在了当前用户家目录的
~/.local/lib/python3.6/site-packages路径下,你提供的SSH端sys.path输出里没有包含这个路径,因此全局Python找不到 - 安装库时分别使用了
sudo pip和普通用户身份安装两种方式,导致库分别安装到了全局路径和用户路径,两端调用时权限/环境匹配不上
排查&解决步骤
- 对比两端模块搜索路径
在Jupyter中执行以下代码,对比和SSH端的sys.path差异:
import sys print(sys.path)
如果Jupyter的输出里包含/home/jetbot/.local/lib/python3.6/site-packages这类用户目录路径,说明库是安装在用户目录下的,SSH端未加载该路径。
- 路径缺失问题修复
在SSH的Python交互终端里先执行以下代码,再尝试导入库,验证是否为路径问题:
import sys sys.path.append("/home/jetbot/.local/lib/python3.6/site-packages") from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
如果导入成功,可进行永久修复:在SSH的~/.bashrc文件末尾添加以下内容:
export PYTHONPATH="/home/jetbot/.local/lib/python3.6/site-packages:$PYTHONPATH"
添加后执行source ~/.bashrc即可生效。
- 虚拟环境适配
如果不是路径问题,检查Jupyter是否使用了虚拟环境:在Jupyter中执行以下代码查看Python可执行文件路径:
import sys print(sys.executable)
如果输出不是/usr/bin/python3,而是类似/home/jetbot/venv/bin/python3的路径,说明Jupyter用了虚拟环境,SSH下需要先激活对应虚拟环境再运行Python:
source /home/jetbot/venv/bin/activate python3
- 全局重装兜底方案
如果以上操作都不生效,直接在SSH会话中执行全局安装命令,确保库安装到全局搜索路径下:
sudo pip3 install Adafruit-MotorHAT
内容的提问来源于stack exchange,提问作者resolver101
相关产品推荐
相关产品推荐

