【基础】Python包管理工具uv使用教程
一、uv简介
uv 是由 Astral(前身为 Basis)团队开发的 Python 包安装器和解析器,完全使用 Rust 语言编写。与传统 Python 工具不同,uv 将多个工具的功能整合到一个高性能的解决方案中,旨在提供更现代、更高效的 Python 开发体验。
底层技术原理
uv 之所以能够实现显著的性能提升,主要基于几个关键技术:
- Rust 实现:利用 Rust 语言的内存安全和高性能特性,避免了 Python 自身的解释开销
- 并行处理:在依赖解析和包下载安装过程中大量使用并行处理
- 优化的缓存策略:智能缓存机制减少重复下载和编译
- 零拷贝设计:减少内存使用和系统调用
- 编译优化:对于需要编译的包,采用更高效的编译策略
uv性能
uv一个极快的 Python 包和项目管理器,用 Rust 编写,有多快呢,看图说话:
突出特点
🚀 一款工具,可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等,并更多。
⚡️ 比 pip 快 10-100 倍 。
🗂️ 提供全面的项目管理 ,具有 通用的锁文件 。
❇️ 运行脚本 ,支持 内联依赖元数据 .
🐍 安装和管理 Python 版本。
🛠️ 运行和安装 发布为 Python 包的工具。
🔩 包含一个 与 pip 兼容的接口 ,以熟悉的 CLI 提升性能。
🏢 支持 Cargo 风格的工作区 ,适用于可扩展的项目。
💾 磁盘空间高效,具有全局缓存以进行依赖项去重。
⏬ 无需 Rust 或 Python,通过 curl 或 pip 即可安装。
🖥️ 支持 macOS、Linux 和 Windows。
二、安装
根据你的操作系统,选择安装方式,Windows安装,需要powershell。
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# With pip.
pip install uv#如果你支持pipx,也可以安装到隔离环境中
pipx install uv
执行界面:
注:dos窗口重新打开,才能开到更新的环境变量,才能使用新安装的uv工具。
另:如果需要更多安装方式或者卸载,见:https://docs.astral.sh/uv/getting-started/installation/#pypi
三、uv功能
uv 为 Python 开发提供必要功能——从安装 Python 和编写简单的脚本到处理支持多个 Python 版本和平台的复杂项目。
Python 版本管理
安装和管理 Python 本身。
- uv python install:安装 Python 版本。
- uv python list:查看可用的 Python 版本。
- uv python find:查找已安装的 Python 版本。
- uv python pin:将当前项目固定到使用特定 Python 版本。
- uv python uninstall:卸载 Python 版本。
命令示例:
uv python list # 查看uv支持的python版本uv python install 3.10 3.11 3.12 # 安装指定版本的Pythonuv python find 3.10 # 查找特定版本的pythonuv python uninstall 3.10 # 卸载特定版本的pythonuv run --python 3.12 python # 指定版本运行python交互界面
uv run -p 3.12 python # 指定版本运行python交互界面
uv run --python pypy@3.8 python
uv run -p pypy@3.8 pythonuv python pin 3.11 # 在当前目录中使用特定的 Python 版本
脚本管理
执行独立的 Python 脚本,例如 example.py。
- uv run:运行脚本。
- uv add --script:向脚本添加依赖。
- uv remove --script: 从脚本中移除依赖
项目
创建并处理 Python 项目,例如,使用 pyproject.toml。
- uv init: 创建新的 Python 项目。
- uv add: 向项目添加依赖。
- uv remove: 从项目中移除依赖。
- uv sync: 将项目的依赖与环境同步。
- uv lock: 为项目的依赖创建锁文件。
- uv run:在项目环境中运行命令。
- uv tree:查看项目的依赖树。
- uv build:将项目构建为分发存档。
- uv publish:将项目发布到包索引。
工具管理
运行和安装发布到 Python 包索引的工具,例如 ruff 或 black。
uvx
/uv tool run
:在临时环境中运行工具。- uv tool install :全局安装工具。
- uv tool uninstall :卸载工具。
- uv tool list :列出已安装的工具。
- uv tool update-shell:更新 shell 以包含工具可执行文件。
兼容pip
手动管理环境和包 — 适用于旧式工作流程或高级命令无法提供足够控制的情况。
创建虚拟环境(替代 venv 和 virtualenv):
- uv venv:创建一个新的虚拟环境。
在环境中管理包(替换 pip 和 pipdeptree):
- uv pip install:将包安装到当前环境。
- uv pip show:显示已安装包的详细信息。
- uv pip freeze:列出已安装的包及其版本。
- uv pip check:检查当前环境是否有兼容的包。
- uv pip list:列出已安装的包。
- uv pip uninstall:卸载包。
- uv pip tree:查看环境的依赖树。
锁定环境中的包(替换 pip-tools):
- uv pip compile:将需求编译到锁文件中。
- uv pip sync: 使用锁文件同步环境。
重要提示:这些命令和原pip命令不完全一致,具体使用时,需进一步阅读手册。
应用
管理和检查 uv 的状态,例如缓存、存储目录或执行自我更新:
- uv cache clean :删除缓存条目。
- uv cache prune:删除过时的缓存条目。
- uv cache dir:显示 uv 缓存目录路径。
- uv tool dir:显示 uv 工具目录路径。
- uv python dir:显示 uv 安装的 Python 版本路径。
- uv self update :将 uv 更新到最新版本。
帮助菜单
--help 标志可用于查看命令的帮助菜单,例如,对于 uv:
uv --help
要查看特定命令的帮助菜单,例如 uv init:
uv init --help
使用 --help 标志时,uv 会显示一个精简的帮助菜单。要查看命令的较长帮助菜单,请使用 uv 帮助 :
uv help
要查看特定命令的长帮助菜单,例如 uv init:
uv help init
当使用较长的帮助菜单时,uv 将尝试使用更少或更多的 “page” 输出,以便它不会一次全部显示。要退出寻呼机,请按 q。
查看版本
寻求帮助时,确定您正在使用的 uv 版本很重要——有时问题已经在较新的版本中得到解决。
要检查已安装的版本:
uv version
以下内容也有效:
- uv --version # Same output as `uv version`
- uv -V # Will not include the build commit and date
- uv pip --version # Can be used with a subcommand
四、uvx运行时工具
uvx 命令可以调用工具而无需安装,使用 uvx
时,工具会被安装到临时的、隔离的环境中。与npx相似。
例如,要运行 ruff:
uvx ruff
这正是等价的:
uv tool run ruff
五、官方参考
官方文档:https://docs.astral.sh/uv/
相关文章:
【基础】Python包管理工具uv使用教程
一、uv简介 uv 是由 Astral(前身为 Basis)团队开发的 Python 包安装器和解析器,完全使用 Rust 语言编写。与传统 Python 工具不同,uv 将多个工具的功能整合到一个高性能的解决方案中,旨在提供更现代、更高效的 Python…...
【十五】Mybatis动态SQL实现原理
Mybatis动态SQL实现原理 目录 Mybatis动态SQL实现原理 概述 动态 SQL 实现原理 总结 概述 每天日常开发都在使用mybatis,但是很多人并没有花心思去理解mybatis的实现原理,一直处于使用阶段,程序员的使命是改变世界,这一点可能…...
UE5 把翅膀动画额外创建动画蓝图并和角色绑定混合动画
把翅膀和角色合并,把翅膀绑在Spine_3上 在5.3内,需要LayerSetup指定骨骼才能使用混合...
Coding Practice,48天强训(30)
Topic 1:爱吃素(素数性质) 爱吃素 在强训25的第一题我总结过关于素数的几种判断方式,如果忘了可以回去看 第一次写我是这样写的 #include <bits/stdc.h> using namespace std;bool isPrime(long long &a, long long …...
华为私有协议Hybrid
实验top图 理论环节 1. 基本概念 Hybrid接口: 支持同时处理多个VLAN流量,且能针对不同VLAN配置是否携带标签(Tagged/Untagged)。 核心特性: 灵活控制数据帧的标签处理方式,适用于复杂网络场景。 2. 工作…...
神经网络之互动练习详解:从基础到拟合非线性数据
神经网络之互动练习详解:从基础到拟合非线性数据 在机器学习的世界里,神经网络是一种强大而神奇的工具,它可以帮助我们解决各种复杂的问题。今天,我们就通过一个有趣的互动练习,来深入了解神经网络的工作原理以及如何…...
遨游科普:2025年,三防平板有多智能?
在极端环境与复杂场景中,专业设备的可靠性始终是行业应用的核心命题。随着物联网、5G通信与边缘计算技术的深度融合,三防平板已突破传统“坚固耐用”的单一属性,进化为集多模通讯、智能感知与场景化扩展于一体的移动智能终端。 AORO P9000三防…...
基于C++的IOT网关和平台7:github项目ctGateway设备协议开发指南
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。 源码指引:github源码指引_初级代码游戏的博客-CSDN博客 系…...
yolov8中的python基础--模块导入篇
import语句有几种不同的写法,它们有不同的用途和优势。 1. 直接 import 语法 import module_name 用途 导入整个模块,使用时需要通过模块名访问其中的内容。 示例 import os print(os.listdir()) # 必须用 os. 前缀 适用场景 当需要频繁使用模块…...
26.2Linux中SPI的驱动实验(编程)_csdn
我尽量讲的更详细,为了关注我的粉丝!!! 这里我们用到的是stm32mp157的板子,所以我们看一下SPI用到的引脚。 1、硬件原理图分析 SPI1_MOSI(对应芯片引脚 SDA/SDI ):主机输出从机输入…...
uv简单使用
通过uv创建项目和虚拟环境 初始化项目 uv init --package my-project 初始化一个名为 my-project 的新项目,并生成必要的文件结构。 创建虚拟环境 uv venv .venv 激活虚拟环境 # For Windows .venv\Scripts\activate# For macOS/Linux source .venv/bin/acti…...
扩增子分析|微生物生态网络稳定性评估之鲁棒性(Robustness)和易损性(Vulnerability)在R中实现
一、引言 周集中老师团队于2021年在Nature climate change发表的文章,阐述了网络稳定性评估的原理算法,并提供了完整的代码。自此对微生物生态网络的评估具有更全面的指标,自此网络稳定性的评估广受大家欢迎。本系列将介绍网络稳定性之鲁棒性…...
线性回归评价标准
In [1]: 12345 import numpy as npfrom sklearn.linear_model import LinearRegressionimport sklearn.datasets as datasets 12 ()diabetesdiabetes $$datasets.load_diabetes In [2]: Out[2]: {‘data’: array([[ 0.03807591,0.05068012,0.06169621,…,-0.00259226, 0.0…...
Qt—鼠标移动事件的趣味小程序:会移动的按钮
1.项目目标 本次根据Qt的鼠标移动事件实现一个趣味小程序:当鼠标移动到按钮时,按钮就会随机出现在置,以至于根本点击不到按钮。 2.项目步骤 首先现在ui界面设计控件(也可以用代码的方式创建,就不多说了) 第一个按钮不需…...
深度解析:2D 写实交互数字人 —— 开启智能交互新时代
在当今数字化浪潮汹涌澎湃的 era,人机交互模式正经历着前所未有的变革与重塑。从最初冷冰冰的机械按键,到如今灵动逼真的数字化形象,交互的内涵不断拓展,已不再局限于信息的单向传递,情感交流、场景融合等多维度需求逐…...
论微服务架构设计及应用
目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)...
处理 Clickhouse 内存溢出
一、前情提要 近日,测试服务器配置时,发现当复杂聚合场景的并发度压到20时,会出现clickhouse内存溢出,内存不足报错,如包含Exception: Memory limit (for query)、Exception: Memory limit (total) exceeded等…...
计算机网络复习资料
前情提要https://blog.csdn.net/Liu_Xin233/article/details/134773846?fromshareblogdetail&sharetypeblogdetail&sharerId134773846&sharereferPC&sharesourceLiu_Xin233&sharefromfrom_link第一章 概述 一、计算机网络在信息时代中的作用(…...
数据结构与算法:区间dp
前言 区间dp也是动态规划里很重要的一部分。 一、内容 区间dp的根本原理就是把大范围问题分解成若干小范围的问题去求解。一般来讲,常见的用法有对于两侧端点去展开可能性和对于范围上的划分点去展开可能性。 二、题目 1.让字符串成为回文串的最少插入次数 class Soluti…...
iPaaS制造案例丨某照明行业头部企业借助谷云科技iPaaS步入数字化转型“快车道”
作为国民经济支柱产业,照明灯饰行业历经技术迭代正加速推进数字化转型。从传统照明到智能物联时代,行业领军企业持续探索智能制造升级路径,通过数字化手段重构产业链效率,为产业智能化转型提供标杆示范。 该企业作为国内领先的照明…...
vue3+ts学习!
今天学习一下vue3ts技术! vue3有两种创建方式 (1)vue-cli (2)vite(官方推荐) 所以我用vite创建一个项目 直接在官网上面写一个这个!cmd执行完后,会让你输入项目名称…...
如何使用 QuickAPI 推动汽车行业数据分享:数据仓库场景下的实践
目录 一、行业痛点:数据孤岛与系统复杂性 二、技术转型:从 Hadoop 到华为 DWS 的数据仓库升级 三、引入 QuickAPI:构建统一的数据服务中台 ✅ QuickAPI 的核心能力 四、落地场景实践 1. 经销商管理数据服务化 2. 汽车维保与销售数据整…...
生命游戏(中等)
思路比较简单:复制一份原始数组;根据复制数组中邻居细胞的状态来更新 board 中的细胞状态。 class Solution {public void gameOfLife(int[][] board) {int[] neighbors{0,1,-1};int rowsboard.length;int colsboard[0].length;int[][] copyboardnew i…...
2025 RSAC|大语言模型应用风险与厂商攻防新策略
RSA大会全球影响力及2025年LLM热议概览 作为全球规模最大、影响力最深远的网络安全盛会之一,RSA大会每年汇聚数万名业界人士共商安全趋势。在2025 RSAC上,生成式人工智能(Generative AI)尤其是大型语言模型(LLM&#x…...
深入理解 Linux 阻塞IO与Socket数据结构
一、阻塞IO的直观演示 示例代码:最简单的阻塞接收程序 #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h>int main() {// 创建TCP套接字int sockfd socket(AF_INET, SOCK_STREAM, 0);// 绑定地址端口struct sockaddr_in ad…...
大模型系列(三)--- GPT1论文研读
论文链接: GPT1: Improving Language Understanding by Generative Pre-Training 点评: 首次将Transformer的decoder部分引入无监督训练且引入了辅助训练目标。文章证明无监督预训练显著提升判别任务性能,其中Transformer架构和长依赖文本数…...
14.Three.js 中的 SpotLight(聚光灯)详解与 Vue3 实战示例
在 Three.js 中,SpotLight(聚光灯)是一种能沿着一个方向发射锥形光束的光源,广泛应用于舞台灯光、聚焦灯、手电筒等模拟场景中。本文将详细介绍 SpotLight 的各个属性和使用方法,并提供一个基于 Vue3 Composition API…...
unix 详解
Unix 系统深度解析 一、Unix 起源与历史 Unix 是由 贝尔实验室(AT&T Bell Labs) 的 肯汤普森(Ken Thompson) 和 丹尼斯里奇(Dennis Ritchie) 于 1969 年 开发的操作系统。其诞生背景是: …...
NetSuite 常用类型Item对应Account异同
NetSuite中会有多种类型不同的Item,在期初数据收集的时候我们一般也会让用户提供给我们Item的主数据信息,其中就包含科目部分,但不同类型Item对应科目不完全相同,所以就想帮助自己和各位一起来梳理一下相关内容。 一般我们常用It…...
CentOS配置了镜像源之后依旧下载元数据失败
// 切换到root用户 su root备份原有的镜像源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup使用阿里云镜像源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo这是清华的…...
mybatis 的多表查询
文章目录 多表查询一对一一对多 多表查询 一对一 开启代码片段编写 专注于 SQL的 编写 JDBC 的写法,注重于 SQL mybatis 在 一对一查询时,核心在于 建立每个表对应的实体类主键根据 主键 id 进行查询,副标根据 设定外键进行查询 在 SQL编写…...
面试常问系列(一)-神经网络参数初始化-之自注意力机制为什么除以根号d而不是2*根号d或者3*根号d
首先先罗列几个参考文章,大家之后可以去看看,加深理解: 面试常问系列(一)-神经网络参数初始化面试常问系列(一)-神经网络参数初始化之自注意力机制_注意力机制的参数初始化怎么做-CSDN博客面试常问系列(一)-神经网络参数初始化-之-softmax-C…...
Linux服务之nginx中http设置及虚拟主机搭建
目录 一.http相关概述 1.mime 2.server下的listen及root 2.1 listen 2.2 root 3.alias别名 4.location相关概述 4.1 语法规则初步解释 5.access模块 6.验证模块 6.1 htpasswd 7.自定义错误页面 8.虚拟主机搭建 (yum安装) 一.http相关概述 h…...
android-ndk开发(7): 从库文件反推ndk版本
android-ndk开发(7): 从库文件反推ndk版本 2025/05/06 1. 概要 对于动态库, 有些能用 parse_elfnote.py 提取,有些不能。 对于静态库, 不能用 parse_elfnote.py 提取; 对于 libopencv_core.a, 可以搜索关键字 General configu…...
MySQL8查询某个JSON类型的字段中出现过的所有键名(json key name)并去重返回
假设我有一张表叫 t1, 其中有一个字段 info 是 JSON类型,现在我想查询 t1.info 字段中出现过的所有键名,MySQL提供了一个函数 JSON_KEYS(column) 来返回单条数据单个JSON字段中的所有键名组成的集合,那我想查询整个表所有记录中某个JSON字段出…...
【AI】基于生活案例的LLM强化学习(入门帖)
一、从“教小孩说话”到“教模型说话”:LLM 训练全貌 1. 先打个比方 第一阶段:预训练 就好比教一个小孩先“读很多书”,让他获得基本的语言能力。对 LLM 来说,就是在海量文本上进行“预测下一个词”的训练,从而学到“…...
如何通过代理 IP 实现异地直播推流
在直播行业日益火爆的今天,许多主播希望突破地域限制,实现异地直播推流,以获得更广泛的观众群体和更好的直播效果。代理 IP 作为一种有效的网络工具,能够帮助主播轻松达成这一目标。本文将详细介绍如何通过代理 IP 实现异地直播推…...
Linux 网络编程 day5 多路IO转接之改进select and poll
三种多路IO转接方法:select , poll , epoll 改进select多路IO转接,使用数组来保存含有需要连接的套接字cfd,不用循环至1024,节约时间提高效率。 #include<stdio.h> #include<stdlib.h> #in…...
【iOS】源码阅读(二)——NSObject的alloc源码
文章目录 前言问题发现探索NSObject的alloc源码实现流程探索NSObject为什么直接走objc_alloc,而GGObject先走alloc总结 前言 前面笔者已经学习了alloc相关源码,之前的alloc底层源码实现步骤是以GGObject为基础的,今天我们来探索一下NSObject中…...
如何在短时间内高效复习食品安全员考试?
以下是一些在短时间内高效复习食品安全员考试的方法: 制定科学计划:根据剩余时间和考试内容,将备考时间划分为基础学习、强化巩固和模拟冲刺三个阶段。如基础学习阶段可安排每天学习 2-3 小时,梳理教材知识;强化巩固阶…...
Kotlin空安全解决Android NPE问题
在 Android 开发中,NullPointerException(NPE)一直是最常见的崩溃类型之一。Kotlin 通过创新的空安全机制,在语言层面彻底解决了这一问题。以下是 Kotlin 空安全的核心要点和实战指南: 一、Kotlin 空安全设计哲学 编译期防御:通过类型系统强制区分可空(?)与非空类型显…...
PrimExpr 与 RelayExpr 的区别
PrimExpr 与 RelayExpr 的区别解析 在 TVM 的表达式系统中,PrimExpr 和 RelayExpr 是两种不同层级的表达式类型,分别服务于 TVM 的不同编译阶段和目标场景。以下是它们的核心区别和关联: 1. 设计目标与层级 特性PrimExprRelayExpr所属层级TV…...
R语言助力森林生态研究:从数据处理到群落稳定性分析的完整流程,结合机器学习与案例写作
在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。 👉 森林生态系统的结构、功能与稳定性是生态学研究的核心。…...
android-ndk开发(8): ndk 和 clang 版本对照表
android-ndk开发(8): ndk 和 clang 版本对照表 2025/05/06 1. 概要 android-ndk 是基于 clang 的编译工具链。 当 clang 自身的版本变更导致了普通用户的编译、链接报错时, 用户可能只关注到了 ndk 版本, 导致问题的分析浮于表面。 android-ndk 官方…...
《AI大模型应知应会100篇》第50篇:大模型应用的持续集成与部署(CI/CD)实践
第50篇:大模型应用的持续集成与部署(CI/CD)实践 🧾 摘要 在AI大模型开发中,随着模型版本迭代频繁、依赖复杂、部署环境多样,构建一套高效可靠的持续集成与持续交付(CI/CD)流程显得尤…...
Python基于Django的在线考试系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
windows操作系统开机自启(自动启动) 运行窗口 shell:startup 指令调出开机自启文件夹
打开 “运行” 窗口,输入 shell:startup 把需要开机自启程序的快捷启动方式复制到启动文件夹 (注意:一定要复制快捷启动方式,可以右键启动的文件,发送到桌面快捷方式,如果直接把启动的文件放进去ÿ…...
笔记本外接显示器检测不到hdmi信号
原因:AMD显卡驱动挂了。 其他 异常特征:显示亮度被禁用,无法调整。 修复步骤: ① ②点击更新驱动程序...
论软件的可靠性设计
目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)...
【Linux】基础开发工具
L i n u x Linux Linux 环境下的开发工具非常丰富,是程序员和开发人员进行高效开发的必备基础。 L i n u x Linux Linux 环境下的开发工具主要包括 y u m yum yum 软件包管理器、 v i m vim vim 文本编辑器、 g c c / g gcc/g gcc/g 编译器、 g d b gdb gdb 调试工…...