在本地 VS Code 中连接 Google Cloud 托管 Jupyter Notebook

2026-07-15 21 预计阅读时间: 1 分钟
来源: infoq.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:7 分钟

Google Cloud Workbench Notebooks 扩展把本地 VS Code 与 Google Cloud 上的托管 Jupyter Notebook 环境连接起来。它解决的核心问题很直接:开发者可以继续使用熟悉的本地编辑器,同时把 Notebook 代码放到云端托管环境中执行,不必在浏览器界面和本地工程之间频繁切换。

本地编辑体验,云端执行环境

这类连接方式把 Notebook 工作流拆成两个部分:VS Code 负责编辑、导航和项目管理,Google Cloud 的托管 Notebook 环境提供 Python 内核及相应计算资源。

对开发者而言,变化不只是“换一个界面”。真正有价值的是让 .ipynb 文件更自然地进入日常工程流程:

  • 在 VS Code 中同时维护 Notebook、Python 模块、SQL 和配置文件。
  • 使用本地 IDE 已有的搜索、代码补全和版本控制能力。
  • 将计算放在托管 Jupyter 环境中,减少本地 Python 环境与云端环境来回切换。
  • 让探索性分析逐步演化为可测试、可复用的工程代码。

需要注意,扩展连接的是远端环境。Notebook 中看到的文件系统、环境变量、Python 包和硬件资源,通常属于 Google Cloud 上的实例,而不是开发者的笔记本电脑。

连接前要确认的三件事

来源摘要没有给出具体的认证方式、支持区域或实例类型,因此实际操作时应以扩展界面和组织的 Google Cloud 配置为准。可以按下面的顺序检查:

  1. 在 VS Code 扩展市场中搜索并安装 Google Cloud Workbench Notebooks 扩展。
  2. 使用有权访问目标 Google Cloud 项目和 Notebook 实例的账号完成认证。
  3. 在扩展提供的资源列表或连接入口中选择托管 Notebook 环境,再为 .ipynb 文件选择对应的远端内核。

企业项目还可能受到 IAM、VPC、防火墙、代理和组织策略的限制。能够在 Cloud Console 中看到实例,并不必然意味着本地 VS Code 可以建立连接;排查时应分别验证资源查看权限、实例使用权限和网络路径。

可以这样验证代码究竟运行在哪里

连接成功后,不要立即执行长时间训练任务。可以先在 Notebook 中运行下面这段 Python,确认主机、解释器和工作目录。代码只依赖 Python 标准库,可以直接复制到一个单元格中执行:

import json
import os
import platform
import socket
import sys
from pathlib import Path

runtime = {
    "hostname": socket.gethostname(),
    "python": sys.version.split()[0],
    "executable": sys.executable,
    "platform": platform.platform(),
    "working_directory": str(Path.cwd()),
    "has_google_cloud_project": bool(os.getenv("GOOGLE_CLOUD_PROJECT")),
}

print(json.dumps(runtime, indent=2))

重点检查 hostnameexecutableworking_directory。如果它们指向远端实例,说明当前单元格使用的是云端内核。GOOGLE_CLOUD_PROJECT 是否存在取决于实例配置,不能把它当作连接成功的唯一判断条件。

接着可以验证项目依赖。假设仓库中有以下 requirements.txt

pandas==2.2.3
scikit-learn==1.5.2

在 Notebook 单元格中安装时,应明确使用当前内核对应的解释器:

import subprocess
import sys

subprocess.check_call([
    sys.executable,
    "-m",
    "pip",
    "install",
    "-r",
    "requirements.txt",
])

这种写法比直接调用 pip 更稳妥,因为 sys.executable -m pip 能减少“包装到了另一个 Python 环境”的风险。生产项目仍应使用锁定文件、预构建镜像或团队统一的环境管理方式,避免每次启动 Notebook 都临时安装依赖。

从实验文件走向可维护工程

远端 Notebook 接入 VS Code 后,可以这样实践:把数据探索留在 .ipynb,把稳定逻辑下沉到普通 Python 模块。例如建立一个最小目录:

notebook-project/
├── notebooks/
│   └── exploration.ipynb
├── src/
│   └── features.py
├── requirements.txt
└── tests/
    └── test_features.py

src/features.py 可以包含可测试的数据处理函数:

from collections.abc import Iterable


def normalize(values: Iterable[float]) -> list[float]:
    items = list(values)
    if not items:
        return []

    low = min(items)
    high = max(items)
    if high == low:
        return [0.0 for _ in items]

    return [(value - low) / (high - low) for value in items]

Notebook 只负责调用和展示结果:

from src.features import normalize

scores = [12.0, 18.0, 30.0]
print(normalize(scores))

这样既保留 Notebook 的交互性,也能让核心逻辑接受单元测试和代码审查。团队还应避免把访问令牌、服务账号密钥或包含敏感数据的输出提交到 Git。

采用时的检查清单

Google Cloud Workbench Notebooks 扩展适合已经使用 VS Code,同时需要 Google Cloud 托管 Jupyter 计算环境的团队。正式推广前,建议完成以下检查:

  • 确认 IAM 权限遵循最小授权原则。
  • 确认远端实例的启动、空闲关闭和费用回收策略。
  • 固定关键 Python 依赖,记录内核和解释器版本。
  • 验证 VS Code 断线、实例停止和内核重启后的恢复流程。
  • 将稳定代码移出 Notebook,并纳入测试和代码审查。
  • 清理 Notebook 输出,防止敏感数据进入版本库。

这项扩展的意义不在于替代 Jupyter,而在于把托管 Notebook 纳入开发者已经熟悉的 IDE 工作流。连接只是起点;权限、依赖、成本和代码组织方式,才决定它能否从个人实验工具变成可靠的团队开发环境。


相关推荐