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

Python脚本无法导入同文件夹模块,Jupyter Notebook却可正常导入求助

解决方法

方法1:改用相对导入修改util.py

把util.py里的import common替换成:

from . import common

这种写法表示从当前模块所在目录导入common模块。注意:如果之后直接运行python util.py会报错,因为直接运行的脚本会被当作__main__模块,不允许使用相对导入,但仅用于Jupyter导入的话完全可行。

方法2:手动添加模块搜索路径

在util.py的最开头加入以下代码:

import sys
from pathlib import Path

# 获取util.py所在的文件夹路径
current_dir = Path(__file__).parent
# 将该路径加入Python的模块搜索列表
sys.path.append(str(current_dir))

不管util.py在哪里被导入,Python都能找到同目录下的common.py,而且直接运行util.py也不会报错。

方法3:将文件夹转为Python包

在该文件夹下新建一个空的__init__.py文件(文件名必须完全一致),让Python把这个目录识别为可导入的包。之后:

  • util.py里可以用from . import common
  • Jupyter Notebook里既可以用import util,也可以用from .util import ...,都能正常加载common模块
问题根源

Jupyter启动时会自动把当前Notebook所在的工作目录加入Python的模块搜索路径(sys.path),所以直接导入同目录的common.py没问题;但Python脚本(比如util.py)被导入时,如果用绝对导入import common,Python会优先去标准库和sys.path内的路径查找,若当前目录未被正确加入搜索路径,或者不符合包的导入规范,就会出现找不到模块的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:53:26