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

Python unittest运行时无法导入其他模块 该如何解决

问题原因

出现该报错的核心原因是Python运行时的模块搜索路径中没有包含项目根目录,导致target.py导入同目录下的utils.py时无法定位到对应文件。

修复方案

方案1:将目录转为标准Python包(最通用)

  • 在application目录下新建空文件__init__.py
  • 在tests目录下新建空文件__init__.py
  • 在测试文件中使用绝对导入引入需要测试的模块,示例:
from application.target import 你需要的类/方法
  • 配置完成后在project_root目录下直接执行py -m unittest discover即可正常运行

方案2:临时添加模块搜索路径

在所有测试文件的开头添加以下代码,主动把项目根目录加入Python搜索路径:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.resolve()))

后续正常导入application下的模块即可。

方案3:执行命令时指定PYTHONPATH环境变量

运行测试命令前临时把当前项目根目录加入搜索路径:

  • Windows cmd环境执行:
    set PYTHONPATH=%cd% && py -m unittest discover
  • Windows PowerShell环境执行:
    $env:PYTHONPATH=$PWD.Path; py -m unittest discover
  • Linux/macOS环境执行:
    PYTHONPATH=. py -m unittest discover

方案4:配置项目结构(长期项目推荐)

在project_root下新建pyproject.toml配置文件,添加如下内容将源码目录纳入包搜索范围:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["application"]

然后在project_root目录下执行pip install -e .安装可编辑版本的项目,之后无需额外配置即可在任意位置正常运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:06