Python依赖管理:uv与pip混用避坑( pyproject.toml/uv.lock/requirements.txt )

版本管理文件

python工程中有如下几个文件涉及到版本

pyproject.toml: 只管理顶层依赖,面相开发者

uv.lock:使用uv sync根据pyproject.toml生成&更新,如果版本不一致则会提示

requirements.txt:使用uv pip install -r requirements.txt生成的,是对pip的兼容

pyproject.toml这个文件优先级最高,如果uv.lock,或者venv环境不一致自动同步。或者使用uv sync和uv lock同步

uv和pip混合使用场景

问题场景:如果pyproject.tom pytest==9.1.0,生成requirements.txt,修改requirements.txt文件:pytest==9.1.1。这时候在一个新venv环境执行pip install -r requirements.txt文件,mytest版本就是9.1.1。再执行uv lock,uv sync后,那么pytest==9.1.0。这时候再次执行pip list,pytest==9.1.1。这个就矛盾了,这时候我理解版本pip list的pytest的版本应该被uv sync给降下来了,怎么还是9.1.1呢

# 查看虚拟路径

(dev2) D:\workspace3\py-vue-1\backend>echo %VIRTUAL_ENV%

D:\workspace3\py-vue-1\backend\dev2

# 查看pip使用的命令位置

(dev2) D:\workspace3\py-vue-1\backend>where pip

C:\Users\****\AppData\Local\Python\bin\pip.exe

可以看出直接用pip install -r requirements.txt 是安装到全局,而dev的实际依赖是9.1.0,不是requirements.txt文件设置的9.1.1。说明生效的uv sync命令。

# uv tree 显示的是默认.venv 环境下的依赖包,而非当前dev2 环境。

(dev3) D:\workspace3\py-vue-1\backend>uv tree

Resolved 16 packages in 5ms

backend v0.1.0

├── pydantic-core v2.48.0

│ └── typing-extensions v4.16.0

├── httpx v0.28.1 (group: dev)

│ ├── anyio v4.14.2

│ │ └── idna v3.18

│ ├── certifi v2026.7.22

│ ├── httpcore v1.0.9

│ │ ├── certifi v2026.7.22

│ │ └── h11 v0.16.0

│ └── idna v3.18

├── pytest v9.1.0 (group: dev)

│ ├── colorama v0.4.6

│ ├── iniconfig v2.3.0

│ ├── packaging v26.3

│ ├── pluggy v1.6.0

│ └── pygments v2.20.0

└── pytest-asyncio v1.4.0 (group: dev)

└── pytest v9.1.0 (*)

(*) Package tree already displayed

**# 使用pip install -r requirements.txt是不准确的,**需要用uv pip install -r requirements.txt,这样就可以安装到当前venv环境,查看使用uv pip list | findstr pytest查看。

dev3实际依赖:

经验结论

  1. uv和pip不要混合使用

  2. uv的一些命令,在多venv环境下,可能只找默认的.venv环境,需要注意

  3. uv.lock和requirements.txt作为pyproject.tmol文件的单向生成文件,不要手动修改

相关推荐
H Journey1 天前
pip 和uv 开发和部署python项目
python·pip·uv
梦想不只是梦与想2 天前
环境管理:Conda 与 venv
python·conda·uv
乐迪绘防伪油墨技术分享4 天前
特种功能油墨选型指南:温变 / 遇水 / 荧光 / UV LED 技术对比与供应商参考
前端·html·uv
Maiko Star8 天前
Python 包与项目管理工具——uv
python·uv
StarDream-Online8 天前
Windows 下 uv 安装与配置完全指南(含环境变量设置)
windows·uv
CAE虚拟与现实9 天前
Uvicorn或者uv是什么?
uv·gunicorn·uvicorn
PatrickYao04229 天前
Linux安装UV
linux·运维·uv
2601_9622845011 天前
uv:终结 Python 虚拟环境管理乱局
python·项目管理·uv·虚拟环境·依赖管理
一直走下去-明13 天前
在 Windows 上安装 uv
windows·uv
<花开花落>14 天前
Python 项目迁移到 uv:经验小结与可复用工作流
python·uv