如何正确导入Jupyter Notebook以实现文件内函数互相调用?
解决Jupyter Notebook导入自定义ipynb时函数互相调用报错的问题
方法1:确保被导入笔记本的函数处于全局作用域
在othernb.ipynb中,函数A和B必须定义在全局命名空间,不能嵌套在局部代码块(比如if __name__ == "__main__":这类判断里)。示例写法:
# othernb.ipynb 正确定义方式 def B(): return "来自函数B的返回值" def A(): # 直接调用全局作用域的B return f"A调用了:{B()}"
如果把B放在局部块内,导入时该函数不会被加载到模块的全局空间,调用A时自然会提示B未定义。
方法2:规范使用import_ipynb的导入流程
- 先安装依赖(未安装时执行):
pip install import_ipynb
- 确保
othernb.ipynb和当前笔记本在同一目录下,按以下方式导入:
import import_ipynb import othernb # 调用时需带上模块前缀 othernb.A()
如果用from导入,同样要保证B在全局作用域:
from othernb import A A()
方法3:更稳定的替代方案——转为py文件导入
若import_ipynb仍有兼容问题,可将othernb.ipynb转为Python脚本:
- 打开
othernb.ipynb,点击File -> Download as -> Python (.py),生成othernb.py文件。 - 在主笔记本中直接导入:
import othernb othernb.A()
这种方式依托Python原生模块机制,作用域逻辑更清晰,能避免多数调用问题。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

