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

Python包内相对导入问题:如何通过__init__.py解决模块找不到错误

解决Python包相对导入问题的方法

问题根源

从包外部(比如根目录的main.py)导入main_package时,Python会将main_package视为顶层模块。此时func.py里的from sub_package.aa import aaf1会被当作绝对导入,但sub_package并非顶层模块,因此触发找不到模块的错误。

具体解决方案

1. 改用正确的相对导入语法

直接修改main_package/func.py中的导入语句,使用相对路径标识:

from .sub_package.aa import aaf1

这里的.代表当前模块所在的包目录,Python会自动识别同包下的sub_package子模块。

2. 规范包结构

确保sub_package目录下存在__init__.py文件(空文件即可),让Python将其识别为合法子包。无需修改main_package/__init__.py,除非你需要对外暴露子包内容,但这对解决当前导入问题不是必需操作。

3. 包模式运行模块(可选)

如果需要单独测试func.py,不要直接执行python main_package/func.py,而是以包模块的方式运行:

python -m main_package.func

这种方式会让Python将当前目录作为包的根路径,正确解析相对导入逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:50:26