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

如何在VS Code Remote-SSH环境下为Jupyter Notebook加载Shell脚本?

解决VS Code Remote-SSH中Jupyter Notebook无法加载环境变量的问题

问题核心

VS Code里的Jupyter Notebook和普通Python文件,运行时用的是非交互式、非登录Shell,不会加载ZSH自定义目录下的配置文件——这就是你把source env.profile放$ZSH_CUSTOM里,终端能用但Notebook没用的原因。

可行解决方案

1. 修改Jupyter内核配置(推荐)

直接让Jupyter内核启动时先加载环境变量:

  • 找到你的Jupyter内核目录,一般是~/.local/share/jupyter/kernels/下对应你用的Python版本的文件夹
  • 打开里面的kernel.json,把argv数组改成下面这样(替换成你的env.profile路径):
    {
      "argv": [
        "bash",
        "-c",
        "source /home/你的用户名/env.profile && python -m ipykernel_launcher -f {connection_file}"
      ],
      "display_name": "Python (带环境变量)",
      "language": "python"
    }
    
  • 保存后重启Jupyter内核,环境变量就会自动加载了

2. 给VS Code的Python/Jupyter指定启动参数

在VS Code的远程工作区设置里(按Ctrl+,打开设置,切换到Remote-SSH工作区标签),添加以下配置:

// 针对Python终端和Jupyter执行环境
"python.terminal.launchArgs": [
  "-c",
  "source /path/to/env.profile && exec zsh"
],
"jupyter.execution.interactiveShellArgs": [
  "-c",
  "source /path/to/env.profile && exec zsh"
]

这样VS Code启动Python或Jupyter相关进程时,会先加载环境变量再启动Shell。

3. 用Python代码手动加载(应急用)

如果上面的方法都嫌麻烦,直接在Notebook第一个单元格运行这段代码:

import os

def load_env(profile_path):
    with open(profile_path, 'r') as f:
        for line in f:
            line = line.strip()
            # 跳过注释和空行
            if not line or line.startswith('#'):
                continue
            if '=' in line:
                key, val = line.split('=', 1)
                # 处理可能的引号
                val = val.strip('\'"')
                os.environ[key] = val

# 替换成你的env.profile路径
load_env('/home/你的用户名/env.profile')

这段代码会直接读取env.profile里的变量,注入到Python的环境中。

为什么之前的方法没用?

  • 交互式终端是登录/交互式Shell,会加载ZSH的$ZSH_CUSTOM、~/.zshrc等配置
  • 但Jupyter/Python进程启动时用的是非交互式非登录Shell,只会加载最基础的配置文件(比如~/.zshenv),甚至可能直接用sh启动,所以之前的配置不会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:20