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

如何从一个Jupyter Notebook运行另一个.ipynb文件并获取返回值?

如何从一个Jupyter Notebook运行另一个并获取返回值

哈哈,这个需求我太熟了!直接用%run ./called_notebook.ipynb确实没法直接把返回值赋值给变量,但有两个实用的办法能搞定:

方法1:用%run -i结合全局变量传递

这个方法适合你想完整运行被调用Notebook的所有代码,同时捕获指定结果的场景:

  1. 修改被调用的Notebook:把你需要返回的值存到一个全局变量里,比如called_notebook.ipynb的代码改成:
def foo():
    print(1)
    return 2

# 将函数返回值存入全局变量
notebook_output = foo()
  1. 在当前Notebook调用并获取值:用-i参数运行被调用Notebook,这个参数会让被调用Notebook共享当前Notebook的命名空间,之后直接访问全局变量即可:
%run -i ./called_notebook.ipynb
# 现在就能拿到返回值了
a = notebook_output
print(a)  # 输出:2

方法2:把Notebook当作模块导入(更灵活)

如果只是想调用被调用Notebook里的特定函数,这种模块化的方式更合适:

  1. 安装依赖库:先装import-ipynb,它能让你直接导入.ipynb文件作为Python模块:
pip install import-ipynb
  1. 被调用Notebook保持原有结构:不用额外修改,比如called_notebook.ipynb还是:
def foo():
    print(1)
    return 2
  1. 在当前Notebook导入并调用:
import import_ipynb
# 直接导入被调用的Notebook
import called_notebook

# 调用函数并获取返回值
a = called_notebook.foo()
print(a)  # 输出:2

两种方法各有侧重:方法1适合需要完整运行目标Notebook所有代码的场景,方法2更适合模块化复用函数,按需调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:18