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文件的单向生成文件,不要手动修改

相关推荐
YOULANSHENGMENG1 天前
Windows11环境下的UV的安装
uv
思茂信息1 天前
CST软件UV Slice切片后可直接删除指定一侧实体
算法·uv·emc·emi·cst·仿真软件
中防喷墨2 天前
ONE-PASS高速UV喷码技术创新发展百科解析
uv
开发者联盟league3 天前
windows安装uv
windows·uv
*wait for?3 天前
利用uv安装python包,并运行jupyter
python·jupyter·uv
中防喷墨5 天前
选UV喷码机还是激光喷码机,哪款更适合流水线?
人工智能·uv
Martina_03216 天前
AI生成的模块场景一烘焙就有黑边?用6步检查Lightmap UV、纹素密度与Padding
人工智能·游戏·3d·aigc·uv·游戏策划·关卡设计
jayhgq6 天前
新一代Python包与项目管理工具——UV
开发语言·python·uv
玖石书7 天前
linux 安装uv(python虚拟环境管理)
linux·python·uv
DP DPharness8 天前
从 uv 装到技能蒸馏:memsearch 的六步配置路径
uv