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

Jupyter Notebook中导入同目录ipynb模块遇ModuleNotFoundError: No module named 'item'问题求助

解决Jupyter Notebook中导入.ipynb父类的问题

嘿,我来帮你搞定这个导入报错的问题!你遇到的ModuleNotFoundError: No module named 'item',核心原因是Python默认不会将.ipynb文件识别为可导入的模块——普通的import语句只会查找.py后缀的源代码文件。下面给你几种实用的解决办法:

方法一:将.ipynb文件转换为.py文件

这是最直接的方式,步骤很简单:

  • 打开你的item.ipynb文件
  • 点击Jupyter菜单栏的File -> Download as -> Python (.py)
  • 将生成的item.py文件放到和phone.ipynb相同的目录下

之后你就可以用原本的导入语句了,不过要注意:如果后续修改了item.ipynb的内容,需要重新导出一次.py文件,否则导入的还是旧代码。

方法二:使用ipynb模块直接导入.ipynb文件

如果你不想每次都手动转换文件,可以用专门的工具来导入.ipynb:

  1. 先安装ipynb包,在Jupyter的代码单元格里运行:
!pip install ipynb
  1. 修改phone.ipynb里的代码(顺便帮你修正了几个小错误):
# 导入.ipynb里的Item类
from ipynb.fs.full.item import Item

# 类名按照PEP8规范大写首字母,且要继承Item而非amir
class Phone(Item):
    def __init__(self, name: str, price: float, quantity: int, broken_phone=0):
        # 调用父类的初始化方法
        super().__init__(name, price, quantity)
        # 断言语句保持不变
        assert broken_phone >= 0, f"broken_Phone {broken_phone} should be positive"

# 创建实例
phone1 = Phone('jj', 5, 6, 7)

这里要提醒你:你原来的代码里把父类写成了amir,这明显是笔误,应该改成Item;另外Python类名的规范是首字母大写,所以phone改成Phone会更符合行业习惯。

额外注意事项

  • 确保两个文件确实在同一个目录下,你可以在phone.ipynb里运行import os; print(os.getcwd())来查看当前工作目录,确认文件路径是否正确。
  • 如果用方法二,要保证item.ipynb里的Item类是在顶层代码中定义的(没有被嵌套在其他代码块里),否则可能无法正常导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:37:47