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

如何在Lambda函数执行Jupyter Notebook时使用Conda内核

解决Lambda执行SageMaker Notebook时无法使用预安装Conda内核的问题

问题分析

你通过Lambda调用websocket执行nbconvert时,只能识别默认的python3(Python3.7)和ir内核,而本地登录SageMaker实例时能看到所有预安装的Conda内核,核心原因是:

  • Lambda触发的终端会话属于非交互式非登录Shell,不会自动加载SageMaker实例的用户环境配置(比如~/.bashrc或~/.bash_profile)
  • 这些配置文件里包含了Conda环境的路径以及Jupyter内核的注册信息,未加载的话Jupyter无法找到预安装的Conda内核

解决方案

修改websocket发送的命令,先加载用户环境配置,再执行nbconvert并指定目标Conda内核名称。

修改后的Lambda代码片段

替换原代码中ws.send(...)的部分:

# 先加载bash配置,再执行nbconvert,指定conda_python3内核(对应Python3.8)
ws.send("\"\"\"[ \"stdin\", \"source ~/.bashrc && jupyter nbconvert --execute --to notebook --inplace /home/ec2-user/SageMaker/test.ipynb --ExecutePreprocessor.kernel_name=conda_python3 --ExecutePreprocessor.timeout=1500\\r\" ]\"\"\"")

可选:直接激活目标Conda环境执行

如果你想指定特定版本的Conda环境(比如conda_pytorch_p38),可以直接激活环境再执行命令:

ws.send("\"\"\"[ \"stdin\", \"source ~/.bashrc && conda activate pytorch_p38 && jupyter nbconvert --execute --to notebook --inplace /home/ec2-user/SageMaker/test.ipynb --ExecutePreprocessor.kernel_name=conda_pytorch_p38 --ExecutePreprocessor.timeout=1500\\r\" ]\"\"\"")

关键注意事项

  • 确保内核名称和你在SageMaker实例本地看到的完全一致(比如conda_python3、conda_pytorch_p38)
  • source ~/.bashrc是关键步骤,它会加载Conda的初始化脚本和Jupyter内核的注册路径
  • 如果~/.bashrc未生效,可以尝试source ~/.bash_profile,不同SageMaker实例的配置文件可能有差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:15:39