在Visual Studio Code中如何调用其他Jupyter notebook内的函数
VS Code Jupyter 跨Notebook调用自定义函数解决方案
VS Code的Jupyter扩展默认对%run运行其他ipynb文件的兼容性较差,可通过以下3种成熟方案实现需求:
方法1:使用import_ipynb库(最贴近原生%run体验)
无需导出文件,直接导入另一个notebook作为模块使用:
- 第一步安装依赖:在终端执行命令
pip install import_ipynb - 在需要调用函数的notebook开头运行以下代码:
import import_ipynb # 假设存放自定义函数的notebook名为utils.ipynb,和当前notebook处于同一目录 import utils
- 后续直接通过
utils.你的函数名()的格式调用即可。如果修改了utils.ipynb里的函数内容,执行重载即可更新:
import importlib importlib.reload(utils)
方法2:导出为py文件调用(无额外依赖,稳定性最高)
- 打开存放自定义函数的notebook,点击VS Code右上角的导出按钮,选择导出为Python文件(命名为
utils.py即可),也可在终端执行命令jupyter nbconvert --to script utils.ipynb完成导出 - 在需要调用的notebook中直接导入:
# 导入所有函数 from utils import * # 也可指定导入特定函数 from utils import 处理函数1, 计算函数2
注意:如果修改了原notebook内的函数,需要重新导出一次py文件才会生效,常规使用场景下手动导出完全足够。
方法3:兼容%run指令写法
部分版本的VS Code Jupyter扩展支持带明确路径的%run指令,可按以下步骤尝试:
- 先运行
%pwd查看当前notebook的工作目录,运行%cd 目标目录切换到存放公共函数notebook的目录 - 再执行
%run "utils.ipynb"即可,路径含特殊字符时必须加引号包裹。
通用提示:不管使用哪种方法,建议在公共函数notebook中把测试用的执行代码用条件判断包裹,避免导入时自动运行:
if __name__ == "__main__": # 此处放测试代码,导入其他notebook时不会执行 test_your_func()
内容的提问来源于stack exchange,提问作者lyubol
相关产品推荐
相关产品推荐

