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

Python从父目录导入类/函数报错,求无sys.path.append的解决方法

Python模块导入问题解答

为什么from src.api.test import tes_func无法正常工作?

Python查找模块时,只会在sys.path列表中的路径里搜索。默认情况下,sys.path包含以下内容:

  • 运行脚本时的当前工作目录
  • Python标准库的安装路径
  • 环境变量PYTHONPATH指定的路径

当你在src/config/config.py中直接使用from src.api.test import tes_func时,src目录并不在sys.path里——此时sys.path默认包含的是src/config/(config.py所在的目录),而src是src/config/的父目录,不在默认搜索路径中,所以Python找不到src.api这个模块,抛出ModuleNotFoundError。

而你添加sys.path.append("../")后,相当于把src/目录(src/config/的上级目录)加入了sys.path,此时api目录就在这个新增的路径下,所以from api.test import tes_func能成功导入。

无需使用sys.path.append("../")的导入方式

1. 使用相对导入

在config.py中用相对路径语法导入,代码如下:

from ..api.test import tes_func
  • 注意事项:
    • 你的src、api、config目录都需要添加空的__init__.py文件,让Python把这些目录识别为包。
    • 不能直接运行config.py作为主脚本(比如python src/config/config.py),因为主模块不支持相对导入。你应该从项目根目录运行入口脚本,比如python src/app.py。

2. 将项目根目录加入PYTHONPATH环境变量

找到你的项目根目录(即包含src文件夹的那个目录),把它添加到PYTHONPATH中:

  • Windows(命令行):
    set PYTHONPATH=C:\path\to\your\project\root;%PYTHONPATH%
    
    也可以在系统环境变量设置中永久添加。
  • Linux/macOS(终端):
    export PYTHONPATH=/path/to/your/project/root:$PYTHONPATH
    

添加后,Python会自动把这个路径加入sys.path,你就能在config.py中直接使用from src.api.test import tes_func了。

3. 将项目安装为可编辑包

在项目根目录下创建pyproject.toml文件,内容示例:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "your-project-name"
version = "0.1.0"

然后在终端进入项目根目录,运行:

pip install -e .

这会把项目以可编辑模式安装到Python环境中,此时项目根目录会被加入sys.path,你可以直接使用from src.api.test import tes_func,而且代码修改后无需重新安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:50:15