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启动时会优先从这些路径查找模块。- Linux/macOS终端:
以根目录为工作目录运行脚本
直接切换到根目录下,运行b.py:cd /your/root/directory/path python src/b.py原理:Python默认会将当前工作目录加入
sys.path,此时根目录就是工作目录,import a可以直接找到对应模块。
内容的提问来源于stack exchange,提问作者EchoInVoid
相关产品推荐
相关产品推荐

