You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VSCode中设置远程Jupyter Notebook的工作目录?

远程Jupyter .ipynb笔记本能否设置工作目录?

这个问题和《如何在VSCode中设置Jupyter的运行文件路径?》类似,但该问题的解决方案仅适用于本地Jupyter实例,对远程实例无效。

当从VSCode连接到远程服务器和内核时,远程Jupyter会话启动时所在的目录会被当作工作目录。比如在/home/foouser/src/下启动笔记本实例,各项目文件夹内的相对导入就无法正常工作。例如project2中的main.ipynb执行from library import resource时,会出现ModuleNotFoundError。

目录结构

.
└── /home/foouser/src/
    ├── project1/
    │   └── main.ipynb
    ├── project2/
    │   ├── library/
    │   │   └── resorce.py
    │   └── main.ipynb
    └── project3/
        ├── ham/
        │   └── spam.py
        └── main.ipynb

我的环境

  • Mac OS上运行的VSCode 1.84.2
  • 树莓派(Debian Bookworm)上运行的Jupyter Lab 4.0.9
  • 树莓派上的Python 3.11
  • VSCode Jupyter扩展v2023.10.1100000000

复现步骤

  1. 在树莓派的/home/foouser/src/目录下启动Jupyter:$ jupyter lab --ip=192.168.1.99 --no-browser
  2. 通过SSH从VSCode连接到树莓派
  3. 浏览并打开/home/foouser/src/project3/main.ipynb文件
  4. 在VSCode中粘贴Jupyter服务器URI,设置远程内核
  5. 运行包含相对导入from ham import spam的代码单元,出现ModuleNotFoundError

已尝试的方法

  • 在/home/foouser/src/project2目录下启动笔记本实例:此方法解决了project2的相对导入问题,但无法同时处理project1或project3——必须在每个项目目录启动多个Jupyter实例,或者停掉一个再启动另一个。而远程主机是资源有限的树莓派,这种方式会导致系统运行缓慢,非常不适用。
  • 在.vscode/settings.json中设置"jupyter.notebookFileRoot": "${fileDirname}":看似可行,但多次尝试后发现无效,相关说明指出该变量仅适用于本地实例。
  • 创建Python辅助函数检测工作目录(编辑:此方法不可靠):这是个临时的拙劣方案,曾生效但后续可能出问题。
    dir_helper.py代码:
    import os
    
    def get_local_folder():
        return os.path.dirname(os.path.realpath(__file__))
    
    然后运行以下代码单元:
    from dir_helper import get_local_folder
    import os
    os.chdir(get_local_folder())
    

内容的提问来源于stack exchange,提问作者Aaron Ciuffo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:43:28