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

在Jupyter Notebook中导入本地模块失败的技术咨询

解决本地模块无法导入的问题

嘿,这个问题我可太熟了!没法导入当前工作目录里的本地模块,通常是几个关键细节没注意到,我给你一一梳理:

1. 先确认你的文件结构是否合理

假设你的项目结构是这样的:

my_project/
├── main.py       # 你要运行的主脚本
└── my_module.py  # 你想导入的本地模块

这种情况下,main.py里直接写import my_module理论上是可行的,但如果结构更复杂(比如模块在子文件夹里),那你需要给子文件夹加一个__init__.py文件(哪怕是空文件也行),把它变成Python可识别的包:

my_project/
├── main.py
└── utils/
    ├── __init__.py
    └── helper.py

这时候在main.py里可以用from utils import helper来导入。

2. 检查Python的运行路径

有时候你以为自己在模块所在的目录运行脚本,但实际上Python的工作目录并不是这里!比如你在my_project的上级目录运行python my_project/main.py,这时候Python的sys.path里可能没有my_project的路径,导致找不到模块。

解决办法有两种:

  • 切换到模块所在的目录再运行脚本:比如先cd my_project,再python main.py
  • 在主脚本里手动添加路径:
    import sys
    from pathlib import Path
    
    # 添加当前脚本所在目录到Python路径
    sys.path.append(str(Path(__file__).parent))
    import my_module
    

3. 千万别和内置/第三方模块重名

这是新手最容易踩的坑!比如你把自己的模块命名为math.py或者requests.py,Python导入的时候会优先找你写的这个模块,而不是系统内置的或者你安装的第三方库,轻则功能异常,重则直接报错找不到模块。

我之前就犯过这错,把模块命名为datetime.py,结果导入datetime的时候一直出问题,排查了半天才发现是自己搞的鬼😂

4. 相对导入的正确姿势

如果你的模块是在一个包内部(比如子文件夹里),想要在包内的脚本之间互相导入,要用相对导入:
比如在utils/helper.py里想导入同目录的tools.py,可以写:

from . import tools

或者从上级目录导入:

from .. import my_module

注意:相对导入只能在作为包的一部分运行时生效,不能直接运行使用相对导入的脚本(比如直接python utils/helper.py会报错,得用python -m my_project.utils.helper这种方式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:48:22