VS Code中如何从一个ipynb文件导入函数到另一个ipynb文件
问题描述
我尝试用最简单的方法将一个ipynb笔记本文件中的函数导入到另一个笔记本中,两个文件存放在同一文件夹下,但运行时仍然抛出错误,请问该如何解决这个问题?
解决方案
Jupyter 默认不支持直接导入.ipynb格式文件作为模块,按普通Python模块的方式直接import会报错,可按以下几种方案解决:
方案1:使用%run魔法命令(无需额外依赖,最简单)
在当前要导入函数的笔记本中运行以下命令即可,假设存储目标函数的文件名为source.ipynb:
%run source.ipynb
运行完成后,source.ipynb中定义的所有函数、变量均可直接在当前笔记本调用。
方案2:使用nbimporter库实现标准import语法
如果需要按常规模块导入的方式调用,可先安装第三方支持库:
pip install nbimporter
安装完成后在当前笔记本中先导入依赖,再导入目标笔记本即可:
import nbimporter # 导入同目录下的source.ipynb,不需要加文件后缀 import source # 调用函数示例 source.自定义函数名()
方案3:导出为py文件(通用性最高)
将需要复用的函数从原笔记本中复制出来,保存为同目录下的.py文件,比如命名为utils.py,之后就可以按普通Python模块的方式导入:
from utils import 自定义函数名
常见避坑点
- 先确认当前Jupyter的工作目录和两个文件的存放目录一致,可运行
import os; print(os.getcwd())查看当前工作路径,路径不对的话用os.chdir("目标文件夹绝对路径")切换。 - 两个笔记本的文件名不要包含中文、空格、特殊符号,也不要和Python内置库(比如math、random)重名,避免导入冲突。
- 原笔记本中定义目标函数的单元格必须无语法错误,且已经成功运行过。
内容的提问来源于stack exchange,提问作者josh
相关产品推荐
相关产品推荐

