【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南

🐍 UV:新一代 Python 环境与包管理器使用指南


一、UV 是什么?

UV 是由 Astral 团队开发的高性能 Python 环境管理器,旨在统一替代 pyenvpipvenvpip-toolspipenv 等工具。

1.1 UV 的主要功能

  • 🚀 极速包安装(基于 Rust)
  • 🧠 自动管理虚拟环境
  • 🌀 Python 多版本支持与切换
  • 📦 统一依赖管理(支持锁文件)
  • 🌍 全局 pip 安装缓存共享
  • 💼 开发 / 生产环境依赖分离

二、UV 使用入门

2.1 下载与安装(https://docs.astral.sh/uv/getting-started/installation/#__tabbed_1_2)

💻 macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
🪟 Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
📦 Pip 安装(不推荐,功能不全)
pip install uv

安装完成后可用 uv --version 检查是否安装成功。


2.2 Python 版本管理

UV 支持下载并管理多个 Python 版本,类似于 pyenv

查看已安装的版本列表
uv python list
下载 Python 指定版本
uv python install 3.10
切换当前使用版本(pin)
uv python pin 3.10 #Pinned `.python-version` to `3.10`

✅ 切换后可立即使用对应版本的 Python 和环境进行项目初始化等操作。


2.3 初始化项目

建议先使用 uv python use 选择好目标版本,然后再进行项目初始化。

创建新项目(使用当前选中的 Python 版本)
uv init my-project
cd my-project
或直接指定 Python 版本
uv init -p 3.11 awesome-project

初始化会自动生成:

  • .venv/ 目录(项目虚拟环境)
  • pyproject.toml(项目依赖声明)
  • uv.lock(锁文件,锁定精确依赖)

三、UV Init 创建项目的注意事项

3.1 推荐使用 uv add 管理依赖

uv add requests
uv add flask sqlalchemy

UV 不建议使用 pip install 安装依赖,因为 UV 项目已默认隔离虚拟环境且依赖受锁文件保护。

3.2 UV 项目的“无 pip 安装”

UV 采用 全局 pip 缓存机制

  • 多个项目使用相同 Python 版本时,共享 pip 缓存,提高安装效率
  • 项目内并没有传统意义上的 pip install 机制
  • 因为 Python 版本一致 => pip 版本一致,避免 pip 被污染或冲突
  • uv.lock 文件用于保证项目依赖一致性,可类比 npm 的 package-lock.json

四、使用 UV 创建虚拟环境

初始化项目后,UV 自动为项目创建 .venv 虚拟环境,无需再手动 python -m venv

如需手动创建虚拟环境:

#运行:
uv venv 
#输出:
#Using CPython 3.13.3
#Creating virtual environment at: .venv
#Activate with: .venv\Scripts\activate

激活方式与常规 .venv 一致:

# Windows cmd运行venv环境
.venv\Scripts\activate
#退出venv环境
deactivate

五、开发与生产环境管理

UV 区分了开发依赖与生产依赖:

5.1 添加开发依赖

uv add --dev black pytest isort

pyproject.toml 中会区分:

  • [dependency-groups]
    dev = ["black>=25.1.0","isort>=6.0.1","pytest>=8.3.5",
    ]

uv.lock

[package.metadata.requires-dev]
dev = [{ name = "black", specifier = ">=25.1.0" },{ name = "isort", specifier = ">=6.0.1" },{ name = "pytest", specifier = ">=8.3.5" },
]

5.2 锁定依赖、部署同步

生成锁文件(默认自动生成):

uv lock

部署时安装所有依赖:

uv pip sync

或仅安装生产依赖:

uv pip sync --production

✅ 总结

功能UV 表现
Python 多版本管理✅ 支持 install/use/list
虚拟环境✅ 自动创建 .venv/
依赖管理✅ 使用 pyproject.toml + uv.lock
安装效率🚀 Rust 实现,远快于 pip
跨平台✅ 支持 macOS / Linux / Windows
开发/生产区分✅ 支持 --dev--production

UV = Python 开发的 Cargo,推荐前端 / 全栈 / 数据等开发者优先试用!


🧪 推荐实践

uv python install 3.11
uv python pin 3.11
uv init -p 3.11 my-fastapi-app
cd my-fastapi-app
uv add fastapi uvicorn
uv add --dev black pytest
uv pip sync

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能

点亮极速体验:结合HTTPS与最佳实践,为你详解网站性能优化的道与术 在如今这个信息爆炸、用户耐心极其有限的数字时代,网站的性能早已不是一个可选项,而是关乎生存和发展的核心竞争力。一个迟缓的网站,无异于在数字世界…

JavaWeb:vueaxios

一、简介 什么是vue? 快速入门 <!-- 3.准备视图元素 --><div id"app"><!-- 6.数据渲染 --><h1>{{ msg }}</h1></div><script type"module">// 1.引入vueimport { createApp, ref } from https://unpkg.com/vu…

Tauri联合Vue开发中Vuex与Pinia关系及前景分析

在 TauriVue 的开发场景中&#xff0c;Vuex 和 Pinia 是两种不同的状态管理工具&#xff0c;它们的关系和前景可以从以下角度分析&#xff1a; 一、Vuex 与 Pinia 的关系 继承与发展 Pinia 最初是作为 Vuex 5 的提案设计的&#xff0c;其目标是简化 Vuex 的复杂性并更好地适配 …

Linux中的时间同步

一、时间同步服务扩展总结 1. 时间同步的重要性 多主机协作需求&#xff1a;在分布式系统、集群、微服务架构中&#xff0c;时间一致性是日志排序、事务顺序、数据一致性的基础。 安全协议依赖&#xff1a;TLS/SSL证书、Kerberos认证等依赖时间有效性&#xff0c;时间偏差可能…

【算法基础】三指针排序算法 - JAVA

一、基础概念 1.1 什么是三指针排序 三指针排序是一种特殊的分区排序算法&#xff0c;通过使用三个指针同时操作数组&#xff0c;将元素按照特定规则进行分类和排序。这种算法在处理包含有限种类值的数组时表现出色&#xff0c;最经典的应用是荷兰国旗问题&#xff08;Dutch …

《操作系统真象还原》第十二章(2)——进一步完善内核

文章目录 前言可变参数的原理实现系统调用write更新syscall.h更新syscall.c更新syscall-init.c 实现printf编写stdio.h编写stdio.c 第一次测试main.cmakefile结果截图 完善printf修改main.c 结语 前言 上部分链接&#xff1a;《操作系统真象还原》第十二章&#xff08;1&#…

ICML2021 | DeiT | 训练数据高效的图像 Transformer 与基于注意力的蒸馏

Training data-efficient image transformers & distillation through attention 摘要-Abstract引言-Introduction相关工作-Related Work视觉Transformer&#xff1a;概述-Vision transformer: overview通过注意力机制蒸馏-Distillation through attention实验-Experiments…

深度学习:AI 机器人时代

在科技飞速发展的当下&#xff0c;AI 机器人时代正以汹涌之势席卷而来&#xff0c;而深度学习作为其核心驱动力&#xff0c;正重塑着我们生活与工作的方方面面。 从智能工厂的自动化生产&#xff0c;到家庭中贴心服务的智能助手&#xff0c;再到复杂环境下执行特殊任务的专业机…

《告别试错式开发:TDD的精准质量锻造术》

深度解锁TDD&#xff1a;应用开发的创新密钥 在应用开发的复杂版图中&#xff0c;如何雕琢出高质量、高可靠性的应用&#xff0c;始终是开发者们不懈探索的核心命题。测试驱动开发&#xff08;TDD&#xff09;&#xff0c;作为一种颠覆性的开发理念与方法&#xff0c;正逐渐成…

应用层自定义协议序列与反序列化

目录 一、网络版计算器 二、网络版本计算器实现 2.1源代码 2.2测试结果 一、网络版计算器 应用层定义的协议&#xff1a; 应用层进行网络通信能否使用如下的协议进行通信呢&#xff1f; 在操作系统内核中是以这种协议进行通信的&#xff0c;但是在应用层禁止以这种协议进行…

Excel-CLI:终端中的轻量级Excel查看器

在数据驱动的今天&#xff0c;Excel 文件处理成为了我们日常工作中不可或缺的一部分。然而&#xff0c;频繁地在图形界面与命令行界面之间切换&#xff0c;不仅效率低下&#xff0c;而且容易出错。现在&#xff0c;有了 Excel-CLI&#xff0c;一款运行在终端中的轻量级Excel查看…

百度后端开发一面

mutex, rwmutex 在Go语言中&#xff0c;Mutex&#xff08;互斥锁&#xff09;和RWMutex&#xff08;读写锁&#xff09;是用于管理并发访问共享资源的核心工具。以下是它们的常见问题、使用场景及最佳实践总结&#xff1a; 1. Mutex 与 RWMutex 的区别 Mutex: 互斥锁&#xf…

STM32 IIC总线

目录 IIC协议简介 IIC总线系统结构 IIC总线物理层特点 IIC总线协议层 空闲状态 应答信号 数据的有效性 数据传输 STM32的IIC特性及架构 STM32的IIC结构体 0.96寸OLED显示屏 SSD1306框图及引脚定义 4针脚I2C接口模块原理图 字节传输-I2C 执行逻辑框图 命令表…

【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用

注意&#xff1a;考虑到UGUI的内容比较多&#xff0c;我将UGUI的内容分开&#xff0c;并全部整合放在【unity游戏开发——UGUI】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言CanvasGroup画布组组件参数 实战专栏推荐完结 前言 如果我们想要整体控制…

大型语言模型个性化助手实现

大型语言模型个性化助手实现 目录 大型语言模型个性化助手实现PERSONAMEM,以及用户资料和对话模拟管道7种原位用户查询类型关于大语言模型个性化能力评估的研究大型语言模型(LLMs)已经成为用户在各种任务中的个性化助手,从提供写作支持到提供量身定制的建议或咨询。随着时间…

生成式 AI 的未来

在人类文明的长河中,技术革命始终是推动社会跃迁的核心引擎。从蒸汽机解放双手,到电力点亮黑夜,再到互联网编织全球神经网络,每一次技术浪潮都在重塑人类的生产方式与认知边界。而今天,生成式人工智能(Generative AI)正以一种前所未有的姿态登上历史舞台——它不再局限于…

【序列化与反序列化详解】

文章目录 一、序列化与反序列化是什么&#xff1f;1. 为什么需要序列化&#xff1f;2. 反序列化的作用 二、常见的序列化格式三、不同编程语言的序列化与反序列化示例1. Python 的序列化与反序列化JSON 序列化Pickle 序列化&#xff08;仅限 Python&#xff09; 2. Java 的序列…

【单例模式】简介

目录 概念理解使用场景优缺点实现方式 概念理解 单例模式要保证一个类在整个系统运行期间&#xff0c;无论创建多少次该类的对象&#xff0c;始终只会有一个实例存在。就像操作系统中的任务管理器&#xff0c;无论何时何地调用它&#xff0c;都是同一个任务管理器在工作&#…

目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数

目录 知识储备 基于YOLOv8改进的无人机露天目标检测与计数 一、环境配置与依赖安装 二、核心代码实现(带详细注释) 1. 改进YOLOv8模型定义(添加注意力机制) 2. 无人机视角数据增强(drone_augment.py ) 3. 多目标跟踪与计数(tracking_counter.py ) 4. 完整推理流…

【在Spring Boot中集成Redis】

在Spring Boot中集成Redis 依赖在application.yml中配置Redis服务地址创建Redis配置类缓存工具类使用 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency&…