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

Python中如何导入上级目录文件?无需根目录__init__.py方案

解决跨目录模块导入问题(无需添加__init__.py)

针对你描述的目录结构(根目录下a.py,src子目录下b.py),以下几种方法可以解决import a时的ModuleNotFoundError,且不需要在根目录添加__init__.py:

  • 修改sys.path临时添加根目录
    在b.py开头添加代码,将根目录路径加入Python的模块搜索路径:

    import sys
    import os
    # 获取根目录路径(当前文件目录的父级目录)
    root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(root_path)
    
    import a
    

    原理:sys.path是Python查找模块的路径列表,手动添加根目录后,解释器就能找到a.py。

  • 通过PYTHONPATH环境变量指定根目录
    在运行b.py前,将根目录添加到PYTHONPATH环境变量中:

    • Linux/macOS终端:
      export PYTHONPATH=/your/root/directory/path:$PYTHONPATH
      python src/b.py
      
    • Windows命令提示符:
      set PYTHONPATH=C:\your\root\directory\path;%PYTHONPATH%
      python src/b.py
      
    • Windows PowerShell:
      $env:PYTHONPATH = "C:\your\root\directory\path;" + $env:PYTHONPATH
      python src/b.py
      

    原理:PYTHONPATH会被自动加入sys.path,Python启动时会优先从这些路径查找模块。

  • 以根目录为工作目录运行脚本
    直接切换到根目录下,运行b.py:

    cd /your/root/directory/path
    python src/b.py
    

    原理:Python默认会将当前工作目录加入sys.path,此时根目录就是工作目录,import a可以直接找到对应模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:15:44