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

Python子模块导入问题:主模块导入子模块脚本时报错

解决Python模块导入路径问题

当运行python3 main.py时,Python的模块搜索路径是module/目录,此时foo1.py里的from foo2 import some_function会去module/下找foo2.py,但实际foo2.py在sub_module/里,所以抛出导入错误。而直接运行foo1.py时,搜索路径是sub_module/目录,因此能正常找到同目录的foo2.py。

解决方法

方法一:使用相对导入

修改foo1.py中的导入语句:

from .foo2 import some_function
  • 优势:符合Python包结构的规范写法。
  • 注意:直接运行foo1.py会报错(Python不会将脚本视为包的一部分),如果需要单独运行foo1.py,需在module的父目录下执行:
    python -m sub_module.foo1
    

方法二:手动添加搜索路径

在foo1.py的最顶部添加以下代码,强制将当前脚本所在目录加入搜索路径:

import os
import sys
# 将foo1.py所在的sub_module目录加入搜索路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

这样无论从main.py导入还是直接运行foo1.py,都能找到foo2.py。

方法三:使用绝对导入并调整运行方式

修改foo1.py的导入语句为绝对路径:

from sub_module.foo2 import some_function
  • 运行main.py:保持原有方式(在module目录下执行python3 main.py)即可正常运行。
  • 直接运行foo1.py:需要在module的父目录下执行模块启动命令:
    python -m sub_module.foo1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:33:16