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

解决pytest与Python环境下ImportError问题求助

解决Python导入clients模块失败的问题

问题原因

你的clients包位于lambdas目录下,但Python解释器无法识别该路径,核心问题有两点:

  1. Windows系统中PYTHONPATH的路径分隔符应为;,而非类Unix系统的:,你之前的配置误用了:导致路径解析错误。
  2. .env中错误地将/venv/bin/python加入PYTHONPATH,这是Python可执行文件路径,不属于模块搜索路径范畴。

解决方案

方案1:命令行临时配置PYTHONPATH(快速验证)

在项目根目录ent-add-api-consumer下打开命令行,执行以下命令:

# 将lambdas目录的绝对路径加入PYTHONPATH
set PYTHONPATH=%CD%\lambdas;%PYTHONPATH%

# 执行单测脚本
python test\unit\consumer\test_create_contingency_service.py

# 或者批量执行pytest
python -m pytest test/unit/

方案2:修正.env文件配置

修改.env中的PYTHONPATH为Windows兼容格式,移除无效路径:

PYTHONPATH=%PYTHONPATH%;./lambdas;./test/unit;./test
LOG_LEVEL=INFO
appName=ent-sls-add-api

修改后需关闭并重新打开命令行窗口,确保环境变量生效。

方案3:在测试脚本中手动添加路径(最可靠)

在test_create_contingency_service.py的最顶部添加代码,动态将lambdas目录加入Python搜索路径:

import sys
from pathlib import Path

# 从测试文件路径回溯到项目根目录,再拼接lambdas路径
project_root = Path(__file__).resolve().parent.parent.parent.parent
sys.path.append(str(project_root / "lambdas"))

# 原有的导入代码
from unittest.mock import MagicMock
from freezegun import freeze_time
from clients import http_client
# ... 其余代码

这种方式不受环境变量配置影响,无论在哪个目录执行脚本都能正常导入。

额外检查

  • 确认所有目录下的__init__.py文件都存在(你的项目结构中已包含,无需修改)。
  • VSCode的python.analysis.extraPaths配置仅用于编辑器代码提示,不影响命令行执行,当前配置["./lambdas"]是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:25:17