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

使用uv tool run pytest运行测试时的导入路径与依赖问题求助

使用uv tool run pytest运行测试时的导入路径与依赖问题求助

嘿,我来帮你搞定这两个用uv和pytest时碰到的问题,都是Python项目结构和环境配置里的常见小坑,咱们一步步来解决:

一、导入路径问题:让测试能找到src里的模块

你说装了可编辑安装(uv pip install --editable ./)但还是导不了模块,核心原因是你的pyproject.toml没正确告诉Python你的代码包在src目录里。

解决步骤:

  1. 打开项目根目录的pyproject.toml,补充或修改[project]部分的包配置:
[project]
name = "你的项目名称"  # 随便填个名字,比如my-project
version = "0.1.0"
# 关键配置:指定代码包来自src目录
packages = [{path = "src"}]
  1. 重新运行可编辑安装命令:
uv pip install --editable ./

这时候Python就会把src目录加入到模块搜索路径里,你在test_file1.py里用from file1 import Class1就能正常导入了,不用加src.前缀。

二、依赖解析问题:让pytest能找到tensorflow等依赖

你碰到的ModuleNotFoundError是因为uv tool run pytest默认会在一个隔离的工具环境里运行,这个环境不会自动继承你项目里安装的依赖。

推荐解决方法(更符合uv的使用逻辑):

放弃用uv tool run pytest,改用uv run pytest,步骤如下:

  1. 把pytest添加为项目的开发依赖:
uv add --dev pytest
  1. 同步项目环境(确保所有依赖都安装到位):
uv sync
  1. 现在直接在项目根目录运行:
uv run pytest

这样pytest就会在你的项目专属环境里执行,自然能找到tensorflow这些依赖了。

如果你坚持想用uv tool run pytest:

那需要把项目依赖也安装到pytest的工具环境里,但这种方式不够优雅,步骤是:

# 把requirements.txt里的依赖安装到工具环境
uv tool install --requirement requirements.txt pytest
# 再运行测试
uv tool run pytest

但还是更推荐用uv run的方式,因为它能保证测试环境和你的开发环境完全一致。

额外小提示

如果你的项目依赖主要在requirements.txt里,也可以把它关联到pyproject.toml,这样用uv sync就能自动同步:

[tool.uv]
requirements = ["requirements.txt"]

之后运行uv sync就会自动安装requirements.txt里的所有依赖,不用再单独跑uv pip install -r了。

备注:内容来源于stack exchange,提问作者Della

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:54:29