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

Python通过__init__.py导出自定义模块时的相对导入错误解决咨询

Python通过__init__.py导出自定义模块时的相对导入错误解决咨询

看起来你在尝试通过__init__.py导出old_div函数时,被相对导入的路径问题卡住了,我来帮你理清楚怎么解决这个问题~

首先先定位错误核心:你写的相对导入路径完全错了!咱们先确认下你的目录结构应该是这样的对吧?

Blackhole/
    server/
        utils/
            __init__.py
            math.py  # 包含old_div函数的文件

你在server/utils/__init__.py里写的from ..utils.math import old_div,其中..代表当前utils目录的上一级(也就是server目录),再加上utils.math的话,相当于让Python去找server/utils/utils/math.py——这显然是不存在的路径,Python也会因为无法识别对应的父包结构,抛出那个相对导入的错误。

正确的导入写法

在server/utils/__init__.py里,只需要用当前目录的相对导入就够了,改成下面这样:

from .math import old_div

这里的.就代表当前的utils包目录,刚好math.py就在这个目录里,完全匹配你的需求。

其他目录如何导入这个函数

  • 如果是在server目录下的其他文件(比如server/main.py)里导入,直接写:
    from utils import old_div
    
  • 如果是在更外层的目录(比如Blackhole目录下的文件)导入,用绝对导入会更稳妥:
    from server.utils import old_div
    

额外注意点

  • 别直接运行__init__.py文件!如果你直接用python server/utils/__init__.py执行这个文件,Python不会把它当成包的一部分,相对导入必然失效,你应该运行上层的业务脚本。
  • 这个问题和虚拟环境没什么关系,主要是导入路径的逻辑没搞对,虚拟环境激活状态不影响错误的修复。

备注:内容来源于stack exchange,提问作者Jonathan Clark Pittman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:23:14