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

Mac下Jupyter Notebook导入Python类文件遇ModuleNotFoundError的解决

解决Jupyter Notebook中导入.ipynb模块的ModuleNotFoundError问题

嘿,这个问题我之前也碰到过——当你把Python脚本转成Jupyter Notebook文件后,直接用普通的import语句肯定会报错,因为Python的模块导入系统默认只识别.py文件,不认.ipynb。下面给你几个实用的解决办法,按推荐程度排序:

方法1:把.ipynb转回.py文件(最稳妥)

这是最直接的方案,相当于回到原来的Python项目结构,同时保留Jupyter的运行环境。你只需要在Jupyter的终端(或者系统终端,先进入项目目录)里执行以下命令:

jupyter nbconvert --to python app_class.ipynb

这个命令会把app_class.ipynb转换成app_class.py文件,之后你原来的from app_class import *语句就能正常工作了。如果有多个.ipynb文件需要转换,可以批量处理:

jupyter nbconvert --to python *.ipynb

方法2:使用import_ipynb模块直接导入.ipynb

如果你不想转回.py文件,也可以用专门的工具来实现.ipynb之间的模块导入:

  1. 先安装import_ipynb模块:
    pip install import-ipynb
    
  2. 在你的main.ipynb文件开头,先导入这个工具,再导入目标模块:
    import import_ipynb
    from app_class import *
    
    if __name__ == '__main__':
        app = App()
        app.run()
    

⚠️ 注意:确保main.ipynb和app_class.ipynb在同一个目录下,如果不在,你需要先把目标文件所在目录添加到Python路径里:

import sys
sys.path.append("/path/to/your/app_class_directory")
import import_ipynb
from app_class import *

方法3:手动读取并执行.ipynb代码(备选方案)

如果上面两种方法都不适用,你可以手动读取app_class.ipynb里的代码并执行,这种方式比较繁琐,但能实现需求:

import nbformat
from nbconvert import PythonExporter

# 读取app_class.ipynb文件
with open('app_class.ipynb', 'r', encoding='utf-8') as f:
    notebook = nbformat.read(f, as_version=4)

# 将Notebook转换为Python代码
exporter = PythonExporter()
code, _ = exporter.from_notebook_node(notebook)

# 执行转换后的代码
exec(code)

# 现在可以正常使用App类了
if __name__ == '__main__':
    app = App()
    app.run()

最后检查一下:确保Jupyter的当前工作目录是你的项目目录,你可以在Notebook里执行%pwd查看,用%cd /path/to/your/project切换目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:08:08