现代 Python 开发:uv 安装、配置与最佳实践

现代 Python 开发:uv 安装、配置与最佳实践

目录

一、uv 是什么?

uv 是由 Astral 公司开发的 Rust 编写的 Python 工具链,核心优势是极速(比 pip 快 10-100 倍)、功能全面,集成了包安装、虚拟环境管理、依赖解析、项目构建等能力,兼容 pip/pipenv/poetry 的生态。

  1. uv 官方文档(最核心)
    地址:https://docs.astral.sh/uv/
    这是 uv 最权威的使用指南,包含安装、基础用法、进阶功能、API 参考等所有内容,也是排查问题的首选。
  2. uv GitHub 源码仓库
    地址:https://github.com/astral-sh/uv
    可以查看源码、提交 Issue(反馈问题)、提 PR(贡献代码),也能在 Releases 页面下载指定版本的 uv 安装包,查看更新日志。
  3. uv 快速入门教程
    地址: https://docs.astral.sh/uv/getting-started/
    官方专为新手设计的快速上手指南,比完整文档更精简,适合刚接触 uv 时快速掌握核心用法。

二、uv 的安装

1. 通用安装方式(推荐)

适用于 macOS、Linux、Windows(PowerShell),执行以下命令自动下载适配系统的版本:

# macOS/Linuxcurl-LsSf https://astral.sh/uv/install.sh |sh# Windows (PowerShell) powershell -c"irm https://astral.sh/uv/install.ps1 | iex"
2. 包管理器安装(可选)

pip 安装(不推荐,仅应急)

pip install uv 

Cargo (Rust 环境)

cargoinstall uv --locked

Homebrew (macOS/Linux)

brew install uv 
3. 验证安装

安装完成后,重启终端,执行以下命令验证:

uv --version# 输出示例:uv 0.1.37 (a1b2c3d 2026-03-03)

三、uv 核心使用场景

1. 基础包安装/卸载

uv 兼容 pip 的大部分用法,且默认使用虚拟环境(无需手动激活),核心命令如下:

功能uv 命令说明
安装包uv pip install requests极速安装单个包
安装指定版本uv pip install requests==2.31.0安装特定版本
从 requirements.txtuv pip install -r requirements.txt批量安装依赖,速度远快于 pip
升级包uv pip install --upgrade requests升级包到最新版本
卸载包uv pip uninstall requests卸载包
查看已安装包uv pip list列出当前环境的包
导出依赖uv pip freeze > requirements.txt导出已安装包到文件
2. 虚拟环境管理

uv 内置虚拟环境功能,比 venv 更简洁:

# 创建虚拟环境(默认在 .venv 目录) uv venv # 激活虚拟环境# macOS/Linuxsource .venv/bin/activate # Windows (Cmd) .venv\Scripts\activate.bat # Windows (PowerShell) .venv\Scripts\Activate.ps1 # 删除虚拟环境rm-rf .venv # macOS/Linuxrmdir /s .venv # Windows
3. 项目依赖管理(兼容 pyproject.toml)

uv 支持现代 Python 项目的 pyproject.toml 配置,替代 requirements.txt

# 初始化项目(生成 pyproject.toml) uv init my_project cd my_project # 添加依赖(自动写入 pyproject.toml) uv add requests # 生产依赖 uv add--dev pytest # 开发依赖# 安装项目所有依赖(从 pyproject.toml) uv install# 同步依赖(移除未在 pyproject.toml 中声明的包) uv sync
4. 运行 Python 代码/脚本

uv 可直接运行代码,自动使用当前虚拟环境:

# 运行脚本 uv run script.py # 运行临时代码 uv run -c"print('Hello, uv!')"# 运行模块 uv run -m http.server 8000

四、进阶用法

缓存管理uv 有全局缓存,清理缓存命令:

uv cache clean # 清理所有缓存

指定 Python 版本uv 可自动下载指定版本的 Python(需提前安装 pyenvuv 内置的 Python 解析器):

uv python install3.11# 安装 Python 3.11 uv run --python3.11 script.py # 使用 3.11 运行脚本

加速 pip 兼容:如果项目暂时不想切换到 uv 命令,可通过 uv 加速 pip:

uv pip install requests # 等同于 pip install,但更快

总结

  1. uv 是高性能的 Python 包/环境管理工具,安装简单,兼容 pip/venv 生态,核心优势是速度快、功能集成度高。
  2. 核心用法:uv pip install(安装包)、uv venv(虚拟环境)、uv add(管理项目依赖)、uv run(运行代码)。
  3. 推荐在新项目中使用 uv init + pyproject.toml 替代传统的 requirements.txt,提升依赖管理规范性。

Read more

因AI“认错脸”,50岁的她坐了6个月牢:被当诈骗犯抓走,回来后房子、车子和狗全没了!

因AI“认错脸”,50岁的她坐了6个月牢:被当诈骗犯抓走,回来后房子、车子和狗全没了!

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 如果有一天,你只是长得像某个人,就被 AI 认定为罪犯——然后被警方带走、关进监狱半年,你会怎么办? 最近,外媒曝光了一起离谱案件:一位来自美国田纳西州的 50 岁女性,仅仅因为 AI 人脸识别误判,被警方当作银行诈骗案的主犯逮捕,并在监狱里待了将近  6 个月。直到银行流水证明她当时根本不在案发地,检方才撤销全部指控。 然而,当她终于重获自由时,她的生活已经几乎被毁掉——房没了,车没了,甚至连她养的宠物狗也没了。 (Angela Lipps 事后接受媒体采访时的照片) 从没坐过飞机,却被押送 1200 英里受审 如开头所说,这位当事人名叫 Angela Lipps,今年 50 岁,住在美国田纳西州中北部。 她有三个已经成年的孩子,

By Ne0inhk
融资3000万美元,服务2000+团队!听Dify专家拆解如何把AI从Demo变生产力

融资3000万美元,服务2000+团队!听Dify专家拆解如何把AI从Demo变生产力

整理 | 梦依丹      出品 | ZEEKLOG(ID:ZEEKLOGnews) 近日,开源 AI 应用开发平台 Dify 宣布完成 3000 万美元 Pre-A 轮融资,由红杉领投,GL Ventures、Alt-Alpha Capital、五源资本、瑞穗力合投资和 NYX Ventures 跟投,目前公司估值已达 1.8 亿美元。 这家从“原型工具”杀出来的黑马,如今已服务全球超 140 万台设备、2000+ 团队和 280 家企业(包括马士基、安克创新等),正朝着“全球 AI 应用工作流标准定义者”狂奔。 那么,Dify 是如何用“

By Ne0inhk
【SpringCloud】注册中心 && 服务注册 && 服务发现 && Eureka

【SpringCloud】注册中心 && 服务注册 && 服务发现 && Eureka

文章目录 * Ⅰ. 背景 * 一、问题描述 * 二、注册中心 * 三、CAP理论 * 四、常见的注册中心 * ① Zookeeper * ② Eureka * ③ Nacos * CAP对比 * Ⅱ. Eureka介绍 * Ⅲ. 搭建EurekaServer * 一、创建Eureka-server子模块 * 二、引入eureka-server依赖 * 三、添加maven项目构建插件 * 四、完善启动类 * 五、编写配置文件 * 六、启动服务 * Ⅳ. 服务注册 * 一、引入eureka-client依赖 * 二、完善配置文件 * 三、启动服务 * Ⅴ. 服务发现 * 一、引入依赖 * 二、完善配置文件 * 三、远程调用 * 四、启动服务 * Ⅵ. Eureka和Zookeeper区别 Ⅰ. 背景 一、问题描述 上个章节的例子中可以看到,远程调用时,

By Ne0inhk

【重学MySQL】一文搞懂行级锁 无废话版

👨‍💻程序员三明治:个人主页 🔥 个人专栏: 《设计模式精解》《重学数据结构》 🤞先做到 再看见! 目录 * 行级锁 * Record Lock * Gap Lock * Next-Key Lock * select ... for update有啥用?我不加for update不行吗? * MySQL 是怎么加行级锁的? * 唯一索引(主键索引)等值查询 * 唯一索引(主键索引)范围查询 * 实验一:针对「大于」的范围查询的情况。 * 实验二:针对「大于等于」的范围查询的情况。 * 实验三:针对「小于」的范围查询时,查询条件值的记录「不存在」表中的情况。 * 实验四:针对「小于等于」的范围查询时,查询条件值的记录「存在」表中的情况。

By Ne0inhk