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

Jupyter Notebook中%run执行ipynb后无法导入类的问题求助

问题:Jupyter Notebook无法从.ipynb文件导入类

我在Jupyter Notebook中尝试从同一目录(桌面)的Coursera_test.ipynb调用create.ipynb里定义的Animals类,遇到了模块找不到的问题。

相关代码

create.ipynb中的代码:

class Animals:
    def __init__(self, animal, age, colour):
        self.animaled= animal
        self.ageed= age
        self.coloured= colour
        self.cuteness= "the cutest"
    
    def move(self):
        print(f"The {self.animaled} is moving")

    def stop (self):
        print (f"The {self.animaled} has stopped")

Coursera_test.ipynb中的代码:

%run "create.ipynb"
from create import Animals

报错信息

%run命令执行无报错,但执行from create import Animals时出现:

----> 1 from create import Animals

ModuleNotFoundError: No module named 'create'

试过用绝对路径执行%run仍报错,将create.ipynb导出为create.py后可正常导入,拼写等问题已排查,求解决方法。


原因分析

  1. Python的import机制仅支持加载.py格式的模块文件,.ipynb是Jupyter的笔记本格式,不属于标准Python模块范畴,因此直接用from ... import ...会找不到模块。
  2. %run是Jupyter专属的魔法命令,它会执行.ipynb文件内的所有代码,执行完成后Animals类已经被加载到当前Notebook的内核命名空间中,不需要再重复导入。

解决方法

方法1:直接使用%run加载的类

删除from create import Animals这一行,直接使用已经加载到命名空间的Animals类即可:

%run "create.ipynb"
# 直接创建类实例使用
my_cat = Animals("cat", 2, "white")
my_cat.move()

方法2:将.ipynb转为.py文件导入

如果必须使用import语法,把create.ipynb导出为.py文件:

  • 在Jupyter Notebook界面中,点击「文件」→「下载为」→「Python(.py)」,生成create.py文件
  • 之后正常导入即可:
from create import Animals
my_dog = Animals("dog", 3, "brown")
my_dog.stop()

方法3:用命令行工具自动转换(适合频繁更新的场景)

如果需要经常更新create.ipynb的内容,可以用nbconvert工具在命令行快速转换:

jupyter nbconvert --to python create.ipynb

转换完成后,再执行from create import Animals就能正常导入类。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:48:25