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

Python3导入外部模块时无法找到其内部子模块该如何解决?

Python同目录子模块导入错误解决方案

错误原因

运行test1.py时,Python的模块搜索路径sys.path默认仅包含运行脚本所在的tests目录、以及执行命令时的当前工作目录,不会自动包含model文件夹的路径。model.py中写的import module是顶层导入语法,Python只会在sys.path里搜索名为module的模块,自然找不到存放在model子目录下的module.py。

可行解决方案

方案1:使用相对导入(最规范,无需额外配置路径)

  1. 先在model文件夹下新增一个空的__init__.py文件(标记该文件夹为合法Python包,兼容所有Python3版本)
  2. 把model.py里的导入代码修改为相对导入:
from . import module
  1. 运行脚本时从项目根目录执行以下命令即可:
python -m tests.test1
  • 注意不要直接使用python tests/test1.py运行,该语法会把tests目录加入sys.path,破坏包层级识别。

方案2:使用绝对导入(适配所有运行场景)

  1. 把model.py里的导入代码修改为从顶层包导入:
from model import module
  1. 如果运行时还是提示找不到model包,可以在test1.py最开头添加两行代码,自动将项目根目录加入模块搜索路径:
import sys, os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

修改完成后无论从哪个目录运行test1.py都可以正常识别模块。

方案3:修改环境变量(适合临时开发调试,无需改代码)

运行脚本前先把项目根目录加到PYTHONPATH环境变量即可:

  • Linux/macOS终端执行:
export PYTHONPATH=你的项目根目录绝对路径:$PYTHONPATH
python tests/test1.py
  • Windows cmd执行:
set PYTHONPATH=你的项目根目录绝对路径;%PYTHONPATH%
python tests\test1.py
  • Windows PowerShell执行:
$env:PYTHONPATH = "你的项目根目录绝对路径;$env:PYTHONPATH"
python tests\test1.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:06:03