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

Python如何从父目录文件导入函数 解决相对导入报错问题

父目录模块导入失败解决方案

错误原因

该报错有两个核心诱因:

  • 导入语句写法错误:b.py位于Folder2/Subfolder2/路径下,父目录为Folder2,正确的相对导入指向应为上级目录..而非.Folder2
  • 直接运行b.py作为脚本时,Python会将b.py所在的Subfolder2目录设为顶级模块搜索路径,无法识别上层的Folder2为合法Python包,因此禁止使用相对导入

可行解决方案

方案1:直接添加父目录到模块搜索路径(最常用,无需调整项目结构)

在b.py的最开头添加如下代码,即可直接导入a模块:

import sys
from pathlib import Path

# 获取Folder2的绝对路径并加入Python搜索路径
sys.path.append(str(Path(__file__).parent.parent.resolve()))

# 直接导入a模块即可调用其中的自定义函数
import a
# 调用示例:a.自定义函数名()

方案2:使用包结构+模块模式运行

如果你希望使用相对导入的写法,可按以下步骤操作:

  • 在Folder2、Subfolder2目录下各新增一个空的__init__.py文件,标记目录为Python可识别的包
  • 将原来的导入语句修改为from .. import a
  • 不要直接运行b.py,切换到Folder1所在的目录,使用模块模式运行脚本:
    python -m Folder2.Subfolder2.b

方案3:临时添加环境变量(适合单次测试场景)

运行脚本前临时把Folder2的路径加入PYTHONPATH环境变量即可:

  • Linux/macOS终端:
    PYTHONPATH=/你的/实际/路径/Folder1/Folder2 python Subfolder2/b.py
  • Windows cmd:
    set PYTHONPATH=C:\你的\实际\路径\Folder1\Folder2 && python Subfolder2\b.py
  • Windows PowerShell:
    $env:PYTHONPATH = "C:\你的\实际\路径\Folder1\Folder2"; python Subfolder2\b.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:09:03