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

无需打包模块,如何在Jupyter Notebook中导入同级模块下子文件夹的Python文件

报错原因

你在命令行执行python api.py时,Python会自动将api.py所在的some_module目录加入模块搜索路径sys.path,因此submodule.py里的from helpers import helper_fun可以正常找到对应模块。
而运行notebook时,默认工作目录是notebook.ipynb所在的根目录(some_module的上级目录),sys.path默认没有包含some_module目录,因此submodule.py导入helpers时会找不到对应模块。


解决方案(无需打包模块)

方案1:不改动原有业务代码,仅在notebook中添加路径配置(推荐)

在执行导入语句前,先将some_module的绝对路径加入sys.path,代码如下:

import sys
import os
# 由于notebook和some_module同级,直接拼接相对路径即可获取到some_module的绝对路径
sys.path.append(os.path.abspath("./some_module"))

执行完上述代码后,再运行from some_module.subfolder import submodule即可正常导入。

方案2:修改submodule.py的导入语句为相对导入

将submodule.py中的from helpers import helper_fun改为相对导入写法:

from ..helpers import helper_fun

该写法表示从当前文件的上级目录导入helpers模块,只要按照包结构导入就能正常匹配依赖。

注意:采用该方案后,若你仍需要在命令行运行api.py,不能再直接使用python api.py命令,需要切换到some_module的上级目录,执行python -m some_module.api运行,否则会因为相对导入规则报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:27:00