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

VS Code远程Jupyter服务器无法修改Notebook文件根目录求助

远程Jupyter Notebook工作目录不随文件路径切换的解决办法

问题场景

用VS Code通过SSH连接远程Jupyter服务器运行Notebook,目录结构如下:

workingDir/notebook_1.ipynb
workingDir/subDir/notebook_2.ipynb

按搜索到的方案设置"jupyter.notebookFileRoot": "${fileDirName}"后完全无效,所有Notebook执行os.getcwd()都返回仓库根目录workingDir。但本地Jupyter和浏览器端Jupyter Lab里,每个Notebook的工作目录都是自身所在文件夹,完全符合预期,问题只出在VS Code连接远程Jupyter的场景。

解决方法

1. 确认配置是远程工作区级别

VS Code的设置分本地用户、远程工作区等多个级别,一定要把jupyter.notebookFileRoot设置在远程工作区的配置里:

  • 打开VS Code设置(快捷键Ctrl+,),切换到"工作区"标签页
  • 搜索jupyter.notebookFileRoot,输入${fileDirName}后保存

2. 修改远程Jupyter服务器的配置

远程Jupyter服务器可能被固定了工作目录,需要调整配置允许动态切换:

  • 找到远程服务器上的Jupyter配置文件,一般在~/.jupyter/jupyter_notebook_config.py(如果没生成过,先执行jupyter notebook --generate-config生成)
  • 找到或添加以下配置:
    # 允许动态设置工作目录
    c.NotebookApp.notebook_dir = ''
    # 确保跨域访问正常(VS Code连接需要)
    c.NotebookApp.allow_origin = '*'
    
  • 重启远程Jupyter服务器

3. 手动在Notebook中切换目录

如果上面的方法都不管用,直接在每个Notebook开头加一段代码强制切换到当前文件所在目录:

import os
from pathlib import Path

# 利用VS Code注入的变量获取当前Notebook路径
notebook_path = Path(globals()['__vsc_ipynb_file__'])
os.chdir(notebook_path.parent)
# 验证是否生效
print(os.getcwd())

这段代码通过VS Code自动注入的__vsc_ipynb_file__变量拿到当前Notebook的完整路径,然后切换到它的父目录,简单直接。

4. 更新VS Code和插件

老版本的VS Code、Python插件或者Jupyter插件可能存在远程环境的兼容bug,把这些都更到最新版本再试试。

内容的提问来源于stack exchange,提问作者L.W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:20