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

【基础】Python包管理工具uv使用教程

uv简介

uv 是由 Astral(前身为 Basis)团队开发的 Python 包安装器和解析器,完全使用 Rust 语言编写。与传统 Python 工具不同,uv 将多个工具的功能整合到一个高性能的解决方案中,旨在提供更现代、更高效的 Python 开发体验。

底层技术原理

uv 之所以能够实现显著的性能提升,主要基于几个关键技术:

  1. Rust 实现:利用 Rust 语言的内存安全和高性能特性,避免了 Python 自身的解释开销
  2. 并行处理:在依赖解析和包下载安装过程中大量使用并行处理
  3. 优化的缓存策略:智能缓存机制减少重复下载和编译
  4. 零拷贝设计:减少内存使用和系统调用
  5. 编译优化:对于需要编译的包,采用更高效的编译策略

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 更新到最新版本。

uvx运行时工具

uvx 命令可以调用工具而无需安装,使用 uvx 时,工具会被安装到临时的、隔离的环境中。与npx相似。

例如,要运行 ruff:

uvx ruff

这正是等价的:

uv tool run ruff

http://www.xdnf.cn/news/4175.html

相关文章:

  • 从零实现基于Transformer的英译汉任务
  • 翻转二叉树(简单)
  • uniapp开发09-设置一个tabbar底部导航栏且配置icon图标
  • Ubuntu 安装 containerd
  • 【东枫科技】代理英伟达产品:交换机系统
  • 如何修改 JAR 包中的源码
  • 地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据
  • mapbox基础,加载Fog云雾效果
  • 【C语言干货】野指针
  • 系统级编程(二):通过读取PE文件获取EXE或者DLL的依赖
  • Spring Cloud Stream集成RocketMQ(kafka/rabbitMQ通用)
  • 2025年OpenAI重大架构调整:资本与使命的再平衡
  • 在Star-CCM+中实现UDF并引用场数据和网格数据
  • 配置Jupyter Notebook环境及Token认证(Linux服务器)
  • Elasticsearch知识汇总之ElasticSearch监控方案
  • 关于 js:1. 基础语法与核心概念
  • Java实现堆排序算法
  • 代理式AI(Agentic AI):2025年企业AI转型的催化剂
  • 2、实验室测控系统 - /自动化与控制组件/lab-monitoring-system
  • 一文速览可证数学定理的DeepSeek-Prover系列模型:从Prover V1、Prover V1.5到DeepSeek-Prover V2
  • AI教你学VUE——Gemini版
  • 【Python】常用命令提示符
  • 【心海资源】0U攻击工具|一键模仿地址生成+余额归集+靓号生成系统
  • Waymo公司正在加快其位于亚利桑那州新工厂的无人驾驶出租车(robotaxi)生产进度
  • react-transition-group 在 React 18 及以上版本中的兼容性问题
  • stm32之输出比较OC和输入捕获IC
  • 域名别名(CNAME)解析及域名注册操作步骤
  • 学习海康VisionMaster之间距检测
  • 深度学习系统学习系列【6】之深度学习技巧
  • 36.金属壳体材料的选择与工艺处理对EMC的影响