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

如何在Python中从父目录导入其他路径下的Python文件?

同根平级目录跨模块导入的正确实现方式

你之前写的导入语句from .. import folder1.file1.py存在两处不符合Python导入规则的问题:

  1. 模块导入路径不能附带文件后缀.py,该写法本身存在语法错误
  2. 路径引用逻辑偏差:..代表从当前文件位置向上跳转两级父目录,而folder1和folder2是同属MainFolder下的平级子目录;且导入语句的语法逻辑为“从指定包导入指定模块/成员”,不能把完整带层级的文件路径直接作为导入对象写在import后面。

推荐方案:基于项目根路径的绝对导入

标准目录结构如下:

MainFolder/
├── folder1/
│   └── file1.py
└── folder2/
    └── file2.py

绝对导入的核心是让Python解释器能将MainFolder识别为全局可搜索的路径,常见实现有两种:

  • 将程序启动入口放在MainFolder根目录下运行:比如在MainFolder下新建启动入口文件,从入口调用folder2内file2的逻辑,此时解释器会自动将MainFolder加入系统搜索路径,在file2.py中直接写导入语句即可:
    from folder1.file1 import 需要引用的函数/类/变量
    
  • 如果必须直接在folder2目录下运行file2.py,需要在file2.py的所有导入逻辑之前,将MainFolder的路径加入Python搜索列表:
    import sys
    import os
    # 定位当前file2.py所在目录的上一级路径,也就是MainFolder的绝对路径
    project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    # 将项目根路径插入到搜索列表最前端,避免同名模块被其他路径优先匹配
    sys.path.insert(0, project_root)
    # 完成路径配置后即可正常写绝对导入语句
    from folder1.file1 import 需要引用的内容
    

可选方案:包结构下的相对导入

当整个MainFolder被打包为正式Python包(比如通过可编辑安装的方式注册到Python环境中),可以使用相对导入实现平级目录的模块引用:

  • 需保证MainFolder、folder1、folder2满足Python包的识别要求:Python3.3+版本即使没有__init__.py文件,也会被自动识别为命名空间包,旧版本需要在每个相关目录下添加空的__init__.py文件
  • 此时在file2.py中的正确相对导入写法为:
    from ..folder1.file1 import 需要引用的内容
    
    注意:这种写法不能直接在folder2目录下运行file2.py,必须从MainFolder的上一级目录作为运行入口启动程序,否则会触发超出顶级包范围的导入报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:45:08