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

已添加__init__.py仍出现Python相对导入错误该如何修复?

问题原因

Python的相对导入仅在文件作为包的一部分被导入时生效,如果你直接执行plugins/test_plugin/test_plugin.py脚本,Python会将该脚本所在的test_plugin目录作为顶级执行目录,无法识别上层的包结构,因此会抛出找不到父包的错误。

你写的导入路径本身没有语法错误:plugins/test_plugin/test_plugin.py向上跳转层级逻辑正确:

  • 1个点(.):当前test_plugin目录
  • 2个点(..):上层plugins目录
  • 3个点(...):项目根目录
    目标analyx.plugins正好在项目根目录下,问题出在运行或包配置环节。
可行解决方案

方案1:调整运行命令

不要直接执行脚本文件,改为在项目根目录下以模块方式运行:

python -m plugins.test_plugin.test_plugin

该方式会自动将当前工作目录(项目根目录)加入Python的模块搜索路径,可正常识别整个包结构。

方案2:使用绝对导入 + 可编辑安装(推荐)

你项目根目录已经有setup.py,直接在根目录下执行可编辑安装:

pip install -e .

安装完成后,整个项目的包会被注册到当前Python环境中,你可以直接把导入语句改成更不容易出错的绝对导入,不需要数相对层级:

from analyx.plugins import Plugin

后续不管在什么位置调用相关模块,都不会出现导入错误。

方案3:临时添加搜索路径

如果不想安装包,可以在test_plugin.py的最开头手动把项目根目录加到模块搜索路径:

import sys
from pathlib import Path
# 向上跳3级找到项目根目录,可根据你的实际路径调整
sys.path.append(str(Path(__file__).parent.parent.parent.resolve()))
# 之后就可以直接用绝对导入
from analyx.plugins import Plugin

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:03