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

Python项目中无需绝对路径,可靠读取根目录config的方法

解决Python项目中跨子文件夹可靠导入根目录config的问题

方法1:动态计算项目根目录(最通用,适配脚本和Notebook)

通过代码自动定位包含config.py的项目根目录,无需硬编码相对层级,子文件夹调整后也无需修改代码。

脚本文件(如scripts/some_script.py)中的实现:

import os
from pathlib import Path
import sys

# 从当前脚本所在位置向上遍历,找到包含config.py的根目录
current_file = Path(__file__).resolve()
root_dir = current_file.parent
while not (root_dir / "config.py").exists():
    root_dir = root_dir.parent

# 将根目录添加到Python路径
sys.path.append(str(root_dir))

# 直接导入config
from config import DATA_PATH

Notebook(如notebooks/some_notebook.ipynb)中的实现:

Notebook中__file__不可用,改用当前工作目录向上遍历:

import os
from pathlib import Path
import sys

# 从当前工作目录向上寻找根目录
root_dir = Path().resolve()
while not (root_dir / "config.py").exists():
    root_dir = root_dir.parent

sys.path.append(str(root_dir))
from config import DATA_PATH

方法2:配置PYTHONPATH环境变量(最简洁)

将项目根目录添加到系统PYTHONPATH,Python会自动在该路径下查找模块,无需每次添加路径。

配置方式:

  • Linux/macOS:终端运行(可加入bashrc/zshrc永久生效)
    export PYTHONPATH="$PYTHONPATH:/absolute/path/to/project"
    
  • Windows:命令提示符运行(可加入系统环境变量永久生效)
    set PYTHONPATH=%PYTHONPATH%;C:\absolute\path\to\project
    
  • IDE配置:在PyCharm/VSC等IDE中,将项目根目录设置为"Source Root",IDE会自动添加到PYTHONPATH。

配置完成后,任何子文件夹中的脚本或Notebook都可直接导入:

from config import DATA_PATH

方法3:Python包相对导入(适合模块调用场景)

项目根目录已包含__init__.py,可视为Python包,使用相对导入语法。

脚本文件(如scripts/some_script.py)中的实现:

from ..config import DATA_PATH

⚠️ 注意:此方法要求脚本必须作为包的一部分执行,不能直接运行脚本文件。正确运行方式是在项目根目录外使用-m参数:

python -m project.scripts.some_script

该方式对Notebook支持较差,更适合纯脚本项目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:52:44