You need to enable JavaScript to run this app. 使用pytest的Python项目正确目录结构及导入报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

使用pytest的Python项目正确目录结构及导入报错如何解决?

问题原因与解决方案

错误根本原因

你使用的src/tests分离的项目结构是Python官方推荐的标准项目结构,无需更换。报错来源于两个核心问题:

  1. main.py中的导入写法不符合包导入规则:from b import triplicate属于顶级模块导入,Python会在sys.path的路径中搜索名为b的模块,而src目录默认不在搜索路径范围内,因此无法找到对应模块。
  2. pytest运行时默认不会把项目根目录、src目录加入Python的模块搜索路径,导致包导入链路中断。

修复步骤

步骤1:修正包内导入写法

给src目录下添加空的__init__.py文件,将其声明为Python包。
修改src/main.py的导入语句,使用包内相对导入:

# 修改前
from b import triplicate
# 修改后
from .b import triplicate

步骤2:配置Python模块搜索路径(二选一即可)

方案A:pytest配置文件(适合快速修复)

在项目根目录新建pytest.ini配置文件,内容如下:

[pytest]
pythonpath = . src

该配置会让pytest运行时自动把项目根目录、src目录加入模块搜索路径,无需其他改动。

方案B:安装项目为可编辑模式(适合长期维护的正式项目)

在项目根目录新建pyproject.toml配置文件,写入基础的项目打包配置:

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

[project]
name = "demo-project"
version = "0.1.0"
packages = ["src"]

在项目根目录执行命令安装可编辑版本的项目:
pip install -e .
安装完成后,src包会被加入Python全局搜索路径,任意位置运行pytest都能正常识别导入。

步骤3:验证运行

修改完成后在项目根目录执行pytest命令,即可正常运行测试用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:48:01