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

Python中如何实现特定目录结构下的相对导入?求助解决报错

解决script.py中导入module.py的问题

先明确你的目录结构:

folder0
 | __init__.py
 | folder1
 |  | __init__.py
 |  | folder2
 |  |  | __init__.py
 |  |  | script.py
 | folder3
 |  | __init__.py
 |  | module.py

你遇到的报错原因是:直接在folder2目录下执行python script.py时,Python会把folder2当作顶级目录,无法识别上层的folder0作为父包,所以相对导入找不到依赖的层级结构。以下是几种可行的解决方法:

方案一:从项目根目录以模块方式运行(推荐)

这是符合Python包设计逻辑的规范做法:

  1. 修改script.py的导入语句(二选一):
    • 相对导入写法:
      from ...folder3 import module
      
    • 绝对导入写法:
      from folder0.folder3 import module
      
  2. 打开终端,切换到包含folder0的上级目录,执行命令:
    python -m folder0.folder1.folder2.script
    
    或者进入folder0目录后执行:
    python -m folder1.folder2.script
    

方案二:设置PYTHONPATH环境变量运行

通过把项目根目录folder0加入Python的模块搜索路径,让Python能直接定位到folder3:

  1. 修改script.py的导入语句为绝对导入:
    from folder3 import module
    
  2. 根据操作系统设置环境变量:
    • Windows命令行:
      set PYTHONPATH=你的folder0完整路径
      cd folder0\folder1\folder2
      python script.py
      
    • Linux/macOS终端:
      export PYTHONPATH=/你的folder0完整路径
      cd folder0/folder1/folder2
      python script.py
      

方案三:通过根目录入口脚本运行

在folder0下创建一个入口脚本,间接运行script.py:

  1. 在folder0目录新建main.py,内容如下:
    from folder1.folder2 import script
    
  2. 保持script.py的相对导入语句不变:
    from ...folder3 import module
    
  3. 切换到folder0目录,执行:
    python main.py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:07:16