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

如何从另一Jupyter Notebook中导入函数?求解报错问题

解决Jupyter Notebook跨文件导入函数的NameError问题

这个问题我之前踩过坑,核心原因是%%run默认会在独立的临时命名空间里执行目标notebook的代码——也就是说,你在n1里定义的test_func其实只存在于那个临时空间里,不会自动跑到n2的主命名空间来,加%%capture只是捕获了运行输出,根本没解决变量/函数共享的问题。给你几个简单直接的解决办法:

方法1:用%run -i命令(最简便,无需额外工具)

-i参数会强制让目标notebook在当前notebook的命名空间里执行,这样定义的函数就会直接加载进来。修改n2里的代码如下:

%%capture
%run -i n1.ipynb

# 现在调用就没问题了
test_func(2)  # 返回3

注意这里用单百分号%run或者双百分号%%run都可以,核心是加-i参数。

方法2:把ipynb转成py文件导入

Jupyter本身支持把notebook导出为Python脚本:

  1. 打开n1.ipynb,在菜单栏选择File > Download as > Python (.py)
  2. 在n2里直接导入:
from n1 import test_func

test_func(2)

如果不想手动导出,也可以在n2里用命令行自动转换(需要安装nbconvert,默认Jupyter环境一般都有):

!jupyter nbconvert --to python n1.ipynb

执行完再按上面的方式import即可。

方法3:用import_ipynb库直接导入ipynb文件

这个库专门用来解决跨notebook导入的问题,步骤如下:

  1. 先安装库:
!pip install import-ipynb
  1. 在n2里导入并使用:
import import_ipynb
import n1

# 调用方式1
n1.test_func(2)

# 调用方式2:直接导入函数
from n1 import test_func
test_func(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:43:50