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

pytest项目结构配置问题:tests目录导入package模块失败

解决方案与最佳实践

问题根源

Python的模块搜索路径未包含你的项目根目录,导致无法找到package模块。下面是几种可行的配置方案,按推荐程度排序:

1. 标准Python包方式(推荐最佳实践)

通过将package安装为可编辑模式,让Python全局能识别该模块,同时支持代码实时修改无需重新安装:

  • 在项目根目录(/home/o*********/Sandbox/test-python)创建pyproject.toml文件,内容如下:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "package"
version = "0.1.0"
  • 执行命令安装可编辑包:
pip install -e .

之后无论从哪个目录运行pytest,都能正常导入package.lib中的函数。

2. 临时添加项目路径到Python环境

适合快速测试,无需额外配置文件:

  • 直接在运行pytest时指定PYTHONPATH:
PYTHONPATH=/home/o*********/Sandbox/test-python pytest tests/

或者先设置环境变量再运行:

export PYTHONPATH=/home/o*********/Sandbox/test-python
pytest

3. 利用pytest的conftest.py自动配置路径

在tests目录下创建conftest.py文件,内容如下,pytest运行时会自动加载该文件并将项目根目录加入搜索路径:

import sys
from pathlib import Path

# 获取项目根目录(tests文件夹的父目录)
root_dir = Path(__file__).parent.parent
sys.path.append(str(root_dir))

之后直接运行pytest即可正常导入模块。

额外注意事项

  • 确保package目录下存在__init__.py文件(Python 3.3+虽支持无此文件的命名空间包,但添加后更明确,兼容性更好)
  • 测试文件中的导入语句保持from package.lib import sum不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 13:33:09