当前位置: 首页 > news >正文

uv包管理 - 小学弟

pip 是 Python包管理工具。uv是一个拥有环境管理、依赖管理、Python版本管理、运行脚本、打包发布等多种功能的Python一体化工具链,集齐了venv、virtualenv、pip、poetry能力于一身。

uv对于包的解析安装速度比pip快数十倍,配置虚拟环境的速度也比virtualenv快数十倍。

uv 是一个 超快的 Python 包管理器,它集成了:

  • 包安装(替代 pip
  • 虚拟环境管理(替代 virtualenv
  • 锁定文件(兼容 pip-tools 和 Poetry

 

1、安装uv

1.1 通过pip安装

?
1
pip install uv

1.2 macOS和Linux:

?
1
curl -LsSf https://astral.sh/uv/install.sh | sh  

1.3 Windows:

?
1
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"    

uv工程默认会生成4个文件:

.python-version:记录当前工程的Python版本。

main.py:主脚本。

pyproject.toml:记录当前uv工程的依赖情况。

README.md:工程的说明文件。

 

2、配置环境

使用uv init命令来创建Python项目

然后在Python项目中添加依赖,使用 uv add命令实现,比如 uv add requests

移除依赖 比如 uv remove requests

uv remove: 移除依赖

uv sync: 同步依赖到虚拟环境中

uv lock: 生成锁文件

uv run: 在虚拟环境中运行脚本

uv tree: 查看依赖列表

uv build: 生成发布包

uv publish: 发布到PyPI

uv pip list: 查看安装的库

 

使用虚拟环境

?
1
2
# 创建一个新的虚拟环境
uv venv myproject

使用这个命令可以为项目初始化一个Python虚拟环境,并且可以指定Python解释器版本。

?
1
uv venv --python 3.10

可以通过以下命令直接创建工程并指定python解释器版本。

?
1
uv init myproject -p 3.10

激活虚拟环境

?
1
2
3
4
5
# Linux/macOS:
source myproject/bin/activate
 
# Windows:
myproject\Scripts\activate

  

3、包管理 

uv 能实现pip的所有功能,语法一致 ,而且比pip安装包的速度更快

比如说安装第三方库,使用 uv pip install命令实现

uv pip show: 显示已安装包的细节

uv pip freeze: 显示已安装包列表及其版本号

uv pip check: 检查当前环境是否有兼容的软件包

uv pip uninstall: 卸载包

uv pip tree: 查看环境依赖

?
1
2
3
4
5
6
7
8
9
10
11
# 安装单个包
uv pip install requests
 
# 安装多个包
uv pip install requests numpy pandas
 
# 安装指定版本的包
uv pip install "django>=4.0,<5.0"
 
# 从 requirements.txt 安装
uv pip install -r requirements.txt

安装依赖

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装项目依赖(从 pyproject.toml)
uv pip install -e .
 
# 安装开发依赖
uv pip install -e ".[dev]"
 
# 安装所有可选依赖
uv pip install -e ".[dev,docs,web]"
 
# 生成锁定文件
uv pip freeze > requirements.lock
 
# 同步依赖(确保环境与 requirements.txt 完全一致)
uv pip sync requirements.txt

添加依赖 

?
1
2
3
4
5
6
7
8
9
10
11
12
# 添加生产依赖
uv add requests
uv add "django>=4.0,<5.0"
uv add requests beautifulsoup4 pandas
 
# 添加开发依赖
uv add --dev pytest black flake8
uv add --dev "pytest>=7.0"
 
# 添加可选依赖组
uv add --group docs sphinx sphinx-rtd-theme
uv add --group web fastapi uvicorn

 

4、管理Python版本

uv可以安装Python,以及对其版本进行管理。比如安装不同版本Python:

uv python install 3.10 3.11 3.12

uv python list: 查看安装的Python版本

uv python pin: 将当前项目固定为使用特定 Python 版本

uv python uninstall: 卸载某版本Python

uv python find 3.13:  查找特定版本的 Python

 

5、执行Python脚本

执行脚本,使用 uv run命令, 如: uv run test.py

1. 明确指定版本(最高优先级)

?
1
2
3
uv run --python 3.11 script.py
uv run --python python3.12 script.py
uv run --python /usr/bin/python3.10 script.py

2. 项目配置文件  

如果有 pyproject.toml

?
1
2
[project]
requires-python = ">=3.9"

或者 .python-version 文件:  

?
1
3.11.5

3. 环境变量

?
1
2
export UV_PYTHON=3.11
uv run script.py

 

6、场景功能覆盖

uv 在高性能之外,构建了覆盖开发全周期的功能矩阵,实现从环境管理到项目部署的一体化支持:

  • Python版本管理:支持 Python 3.10/3.11/3.12 等多版本并行安装与快速切换,通过 uv python install 命令 10 秒级完成运行环境部署,彻底解决项目间版本冲突问题。

  • 工具管理:兼容 pipx 的工具安装逻辑,通过uv add命令直接安装并运行 Python 应用程序,无缝融入开发工作流。

  • 脚本支持:针对单文件脚本提供内联依赖管理,通过uv add --script为脚本动态注入依赖,避免全局环境或项目污染,实现 “脚本即独立单元” 的轻量化开发。

  • 全面的项目管理:生成uv.lock文件固化依赖版本,结合uv sync命令实现跨环境依赖一致性,提升项目可移植性。

  • 工作区支持:对于大型项目,uv支持Cargo风格的工作区。

  • 全局缓存:uv节省磁盘空间,通过全局缓存实现依赖去重。

 

7、使用场景

想使用Python 3.12,但尚未安装。我们可以先运行以下命令让uv帮我们安装,然后再设置虚拟环境:

?
1
uv python install 3.12

准备好创建虚拟环境时,运行:

?
1
uv venv --python 3.12

需要 requirements.txt文件,可以运行:

?
1
uv pip compile pyproject.toml -o requirements.txt  

可以随时通过 uv pip sync 从 requirements文件安装依赖。  

 

8、高级玩法

?
1
2
3
4
5
import requests
 
 
res = requests.get('http://www.baidu.com')
print(res.text)

没有安装request,运行会报错

可以这样运行,因为这样无需全局安装依赖或在不需要的项目中安装,就能以隔离的方式运行这个脚本

?
1
uv add --script run.py requests

  

9、从其他工具迁移

从pip + venv迁移

?
1
2
3
# 有requirements.txt的项目
uv init
uv add -r requirements.txt 

从Poetry迁移

?
1
2
# Poetry项目直接兼容
uv sync  # 自动识别pyproject.toml 

从Pipenv迁移

?
1
2
3
4
5
# 导出现有依赖
pipenv requirements > requirements.txt
uv init
uv add -r requirements.txt
rm Pipfile Pipfile.lock  # 清理旧文件

  

10、遇到问题?秒速解决!

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 🔧 清理缓存
uv cache clean
 
# 🔄 重建环境
rm -rf .venv && uv sync
 
# 🔍 查看依赖树
uv tree
 
# 🐛 详细日志调试
uv sync --verbose
 
# ✅ 检查配置
uv --version
 
# 依赖冲突解决
uv lock --resolution lowest-direct
 
# 验证环境一致性
uv lock --check
 
# 强制重新解析
uv lock --upgrade

  

 

 
http://www.agseo.cn/news/45/

相关文章:

  • 对口型视频创作指南:AI如何让“假唱”变成真艺术?
  • 用Python + Tesseract OCR:验证码识别全流程解析
  • Dockerfile中的yum install、yum clean和rm -rf /var/cache/yum
  • Linux 完整的用户登录工作流程详解(GUI TTY)
  • 0 元夺宝小程序介绍
  • 线上频繁FullGC?慌得一比!竟是Log4j2的这个“特性”坑了我
  • clickhouse进程stop之后为什么还自动启动
  • 294、瑶池
  • Unix/Linux 高效的平台通过 IP 地址获取接口名的 C++ 构建
  • 每周读书与学习-初识JMeter 元件(一)
  • CloudBeaver轻量级的云数据库管理工具
  • kylin V10使用安装盘制作本地镜像
  • ArchVizTools Generators Collection 插件合集:3ds Max 建筑可视化神器(2018–2026 适用)
  • 初识python:一些基础的知识(六)
  • 进程注入
  • 告别框架臃肿-我如何在不牺牲性能的情况下重新发现简单之美
  • 自动点击网课确定按钮刷网课
  • 实时通信的头痛-问题不在WebSocket而是你的框架
  • 别再猜了-开始测量吧-一份实用的Web性能指南
  • Cisco Nexus Dashboard 4.1(1g) - 云和数据中心网络管理软件
  • mysql备份详解
  • Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
  • 开源浪潮激荡,智驱能源革新:MyEMS 如何破局重塑能源管理新范式
  • 软件工程第一次作业
  • 在 Amazon Athena 中使用 Java 自定义 UDF
  • Tenda AC20路由器缓冲区溢出漏洞分析
  • 做题笔记 02
  • 实用指南:[网络入侵AI检测] docs | 任务二分类与多分类