UV: Python包和项目管理器(从入门到不放弃教程)

目录

  • UV: Python包和项目管理器(从入门到不放弃教程)
    • 1. 为什么用uv,而不是conda或者pip
    • 2. 安装uv(Windows)
      • 2.1 powershell下载
      • 2.2 winget下载
      • 2.3 直接下载安装包
    • 3. uv教程
      • 3.1 创建虚拟环境 (`uv venv`)
    • 4. uvx
    • 5. 此pip非彼pip
    • 6. uv没有虚拟环境的列表

UV: Python包和项目管理器(从入门到不放弃教程)

还在用慢吞吞的 pip 和略复杂的 conda 吗?试试 uv!🚀 这款用 Rust 打造的 Python 包管理器,速度快到飞起!⚡️ 集成虚拟环境管理,告别 virtualenv。安装、卸载、锁定依赖,统统快人一步!💨 让你的 Python 开发更流畅、更高效!✨

1. 为什么用uv,而不是conda或者pip

你还在为迟迟进不去conda环境而烦恼吗?你是不是感觉pip安装一些大点的Python包贼拉慢!

对,你不是一个人,是时候做个渣男,放弃旧爱conda/pip,拥抱新欢uv啦!
TL;DR: uv 之所以被开发者考虑用作 condapip 的替代品,主要是因为它号称自己比pip快10-100倍!这你敢信?!高低得安装一下尝尝鲜!

在这里插入图片描述

相对于 pip

  • 速度更快: uv 使用 Rust 编写,这使得它在包的安装、依赖解析和虚拟环境创建等方面通常比 pip 快很多倍。尤其是在处理大型项目和复杂的依赖关系时,速度差异更为明显。
  • 集成的环境管理: uv 不仅处理包管理(像 pip 那样),还内置了虚拟环境管理的功能(类似于 virtualenv)。这意味着你不需要单独使用 virtualenv 来创建和管理虚拟环境,uv venv 命令就能完成。
  • 更现代的设计: uv 旨在解决 pip 长期存在的一些性能和用户体验问题,例如依赖冲突处理和错误消息提示。
  • 兼容性: uv 在设计上力求与 pip 的生态系统兼容,这意味着它仍然可以从 PyPI (Python Package Index) 安装包,并且理解 requirements.txt 文件。

相对于 conda

  • 更轻量级和更专注于 Python 包: conda 是一个更通用的包管理器,它可以管理包括 Python、非 Python 的库(如 C/C++ 依赖)以及整个软件栈。uv 目前更专注于 Python 包的管理。如果你主要处理 Python 项目,并且不需要 conda 的非 Python 包管理能力,uv 通常更轻量级。
  • 速度: 在 Python 包的安装和环境创建方面,uv 通常比 conda 更快。conda 的依赖解析有时会比较慢。
  • 更贴近 pip 的工作流程: 对于已经习惯了 pipvirtualenv 工作流程的开发者来说,uv 的某些命令和概念可能更容易理解和接受。
  • 避免 conda 的一些复杂性: conda 的环境管理有时可能比较复杂,尤其是在处理不同频道(channels)和依赖冲突时。uv 的设计目标是更简洁和直接。

2. 安装uv(Windows)

具体安装文档可参考官方文档:https://docs.astral.sh/uv/getting-started/installation/
以下是在Windows系统下的几种安装方式。

2.1 powershell下载

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

2.2 winget下载

winget install --id=astral-sh.uv  -e

2.3 直接下载安装包

🤣😂🤣😂 哎哟喂!本该一行命令轻松搞定,谁料卡在了 GitHub 这道墙🧱,😭。看来只能手动“搭梯子”去搬运资源了(🤫🤫🤫 你懂的)。

下载地址:uv-x86_64-pc-windows-msvc.zip
解压后,将解压后的文件夹目录设置环境变量即可生效。

3. uv教程

3.1 创建虚拟环境 (uv venv)

  • 功能: 创建一个新的 Python 虚拟环境。

  • 示例:

    # 在当前目录下创建一个名为 .venv 的虚拟环境,使用系统默认的 Python 版本
    uv venv# 在当前目录下创建一个名为 my-project-env 的虚拟环境,使用指定的 Python 3.11 版本
    uv venv -p python3.11 my-project-env# 在指定路径创建一个名为 custom-env 的虚拟环境,使用 Python 3.10
    uv venv -p python3.10 /path/to/my/project/custom-env
    

3.2. 安装包 (uv pip install)

  • 功能: 在激活的虚拟环境中安装 Python 包。(ps:看到这里的pip老熟悉了,但是,此pip非彼pip,这里是uv本身的安装命令。)

  • 示例:

    # 确保你已经激活了虚拟环境 
    # Windows (CMD): .\venv\Scripts\activate
    # macOS/Linux (Bash/Zsh): source venv/bin/activate# 安装 requests 包
    uv pip install requests# 安装指定版本的 Flask 包
    uv pip install Flask==2.2.2# 从 requirements.txt 文件安装所有依赖
    uv pip install -r requirements.txt# 安装开发依赖 (通常在 requirements-dev.txt 中)
    uv pip install -r requirements-dev.txt -d dev
    

3.3. 卸载包 (uv pip uninstall)

  • 功能: 从激活的虚拟环境中卸载指定的 Python 包。

  • 示例:

    # 确保你已经激活了虚拟环境# 卸载 requests 包
    uv pip uninstall requests# 卸载多个包
    uv pip uninstall Flask Werkzeug
    

3.4. 列出已安装的包 (uv pip list)

  • 功能: 显示当前激活的虚拟环境中已安装的包及其版本。

  • 示例:

    # 确保你已经激活了虚拟环境
    uv pip list
    

3.5. 导出 requirements 文件 (uv pip freeze)

  • 功能: 将当前激活的虚拟环境中已安装的包及其确切版本导出到 requirements.txt 文件中。

  • 示例:

    # 确保你已经激活了虚拟环境# 导出到默认的 requirements.txt 文件
    uv pip freeze > requirements.txt# 导出到指定的文件
    uv pip freeze > my_dependencies.txt
    

3.6. 运行工具 (uv tool run) 或其别名 (uvx)

  • 功能: 运行由 Python 包提供的命令行工具,无需显式安装到当前虚拟环境或全局环境。uv 会自动创建一个临时的隔离环境来运行该工具。

  • 示例:

    # 运行 black 代码格式化工具
    uvx black .# 运行 flake8 代码检查工具
    uv tool run flake8 my_module.py# 运行指定版本的 pylint
    uvx pylint@2.10.0 my_module.py
    

3.7. 锁定依赖 (uv pip compile)

  • 功能:requirements.in 文件编译生成精确的锁定文件 (requirements.txt),包含所有直接和间接依赖及其确切版本。这有助于实现可复现的构建。

  • 示例:

    # 假设你有一个 requirements.in 文件# 编译生成 requirements.txt
    uv pip compile requirements.in -o requirements.txt# 指定输出文件
    uv pip compile input_deps.in -o locked_deps.txt
    

3.8. 同步依赖 (uv pip sync)

  • 功能: 根据锁定的 requirements.txt 文件同步当前虚拟环境中的依赖。如果虚拟环境中的包与锁定文件不一致,uv 会安装、升级或卸载包以使其与锁定文件匹配。

  • 示例:

    # 确保你已经激活了虚拟环境,并且有一个 requirements.txt 文件# 根据 requirements.txt 同步虚拟环境
    uv pip sync requirements.txt# 同步指定的锁定文件
    uv pip sync locked_dependencies.txt
    

3.9. 移除虚拟环境 (uv venv --remove)

  • 功能: 删除指定的虚拟环境。

  • 示例:

    # 删除当前目录下的名为 .venv 的虚拟环境
    uv venv --remove .venv# 删除指定路径的虚拟环境
    uv venv --remove /path/to/my/project/my-project-env
    

这些操作涵盖了使用 uv 进行 Python 项目开发和依赖管理的常见需求。记住在使用 uv pip install, uv pip uninstall, uv pip list, uv pip freeze, uv pip sync 等命令时,通常需要在你的虚拟环境被激活的状态下进行操作,以确保这些操作影响的是你的项目环境而不是全局环境。

4. uvx

当你在安装uv的时候,同时也会安装uvxuvx是一个无需安装即可运行 Python 工具的命令, uvx 专门用于调用由 Python 包提供的命令行工具,而无需将这些工具显式安装到项目的虚拟环境或全局环境中。

  • uv tool run 的别名: uvx 命令是 uv tool run 的直接别名。这两个命令完全等效。
  • 在临时的、隔离的环境中安装工具: 当你使用 uvx <工具> 时,uv会自动创建一个临时的、隔离的虚拟环境,将包含该工具的必要包安装到该环境中,运行该工具,然后通常会丢弃该临时环境(尽管它可能会被缓存以加快后续运行速度)。
  • 类似于 Node.js 中的 npxuvx 的功能与 Node.js 生态系统中的 npx 非常相似,允许你执行工具而无需全局安装它们。

5. 此pip非彼pip

uv 自身就实现了安装 Python 包的功能,它是一个替代 pip 的工具。 当你运行 uv pip install 时,uv 会使用它自己的内部逻辑来下载、解析和安装包,而不会依赖于系统中是否安装了 pip。因此,如果你想使用 uv 来安装包,直接使用 uv pip install <包名> 即可,无需担心是否安装了 pip

  • uv pip installuv 提供的安装包的命令。
  • uv 自身包含了安装包的逻辑,不需要依赖 于传统的pip
  • 即使你的系统中没有安装 pip,你也可以直接使用 uv pip install 来安装包。

6. uv没有虚拟环境的列表

用过conda的人都熟悉conda env list来查看已经安装的虚拟环境有哪些。但是uv没有哦。

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

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

相关文章

网络开发基础(游戏方向)之 概念名词

前言 1、一款网络游戏分为客户端和服务端两个部分&#xff0c;客户端程序运行在用户的电脑或手机上&#xff0c;服务端程序运行在游戏运营商的服务器上。 2、客户端和服务端之间&#xff0c;服务端和服务端之间一般都是使用TCP网络通信。客户端和客户端之间通过服务端的消息转…

java将pdf转换成word

1、jar包准备 在项目中新增lib目录&#xff0c;并将如下两个文件放入lib目录下 aspose-words-15.8.0-jdk16.jar aspose-pdf-22.9.jar 2、pom.xml配置 <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><versi…

【C/C++】插件机制:基于工厂函数的动态插件加载

本文介绍了如何通过 C 的 工厂函数、动态库&#xff08;.so 文件&#xff09;和 dlopen / dlsym 实现插件机制。这个机制允许程序在运行时动态加载和调用插件&#xff0c;而无需在编译时知道插件的具体类型。 一、 动态插件机制 在现代 C 中&#xff0c;插件机制广泛应用于需要…

【音视频】AAC-ADTS分析

AAC-ADTS 格式分析 AAC⾳频格式&#xff1a;Advanced Audio Coding(⾼级⾳频解码)&#xff0c;是⼀种由MPEG-4标准定义的有损⾳频压缩格式&#xff0c;由Fraunhofer发展&#xff0c;Dolby, Sony和AT&T是主 要的贡献者。 ADIF&#xff1a;Audio Data Interchange Format ⾳…

机器学习 Day12 集成学习简单介绍

1.集成学习概述 1.1. 什么是集成学习 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它类似于&#xff1a; 超级个体 vs 弱者联盟 单个复杂模型(如9次多项式函数)可能能力过强但容易过拟合 组合多个简单模型(如一堆1次函数)可以增强能力而不易过拟合 集成…

通过爬虫方式实现头条号发布视频(2025年4月)

1、将真实的cookie贴到代码目录中toutiaohao_cookie.txt文件里,修改python代码里的user_agent和video_path, cover_path等变量的值,最后运行python脚本即可; 2、运行之前根据import提示安装一些常见依赖,比如requests等; 3、2025年4月份最新版; 代码如下: import js…

Linux ssh免密登陆设置

使用 ssh-copy-id 命令来设置 SSH 免密登录&#xff0c;并确保所有相关文件和目录权限正确设置&#xff0c;可以按照以下步骤进行&#xff1a; 步骤 1&#xff1a;在源服务器&#xff08;198.120.1.109&#xff09;生成 SSH 密钥对 如果还没有生成 SSH 密钥对&#xff0c;首先…

《让机器人读懂你的心:情感分析技术融合奥秘》

机器人早已不再局限于执行简单机械的任务&#xff0c;人们期望它们能像人类伙伴一样&#xff0c;理解我们的喜怒哀乐&#xff0c;实现更自然、温暖的互动。情感分析技术&#xff0c;正是赋予机器人这种“理解人类情绪”能力的关键钥匙&#xff0c;它的融入将彻底革新机器人与人…

Linux笔记---进程间通信:匿名管道

1. 管道通信 1.1 管道的概念与分类 管道&#xff08;Pipe&#xff09; 是进程间通信&#xff08;IPC&#xff09;的一种基础机制&#xff0c;主要用于在具有亲缘关系的进程&#xff08;如父子进程、兄弟进程&#xff09;之间传递数据&#xff0c;其核心特性是通过内核缓冲区实…

Ollama API 应用指南

1. 基础信息 默认地址: http://localhost:11434/api数据格式: application/json支持方法: POST&#xff08;主要&#xff09;、GET&#xff08;部分接口&#xff09; 2. 模型管理 API (1) 列出本地模型 端点: GET /api/tags功能: 获取已下载的模型列表。示例:curl http://lo…

【OSCP-vulnhub】Raven-2

目录 端口扫描 本地/etc/hosts文件解析 目录扫描&#xff1a; 第一个flag 利用msf下载exp flag2 flag3 Mysql登录 查看mysql的运行权限 MySql提权&#xff1a;UDF 查看数据库写入条件 查看插件目录 查看是否可以远程登录 gcc编译.o文件 创建so文件 创建临时监听…

Podman Desktop:现代轻量容器管理利器(Podman与Docker)

前言 什么是 Podman Desktop&#xff1f; Podman Desktop 是基于 Podman CLI 的图形化开源容器管理工具&#xff0c;运行在 Windows&#xff08;或 macOS&#xff09;上&#xff0c;默认集成 Fedora Linux&#xff08;WSL 2 环境&#xff09;。它提供与 Docker 类似的使用体验…

极狐GitLab 权限和角色如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 权限和角色 (BASIC ALL) 将用户添加到项目或群组时&#xff0c;您可以为他们分配角色。该角色决定他们在极狐GitLab 中可以执…

解锁现代生活健康密码,开启养生新方式

在科技飞速发展的当下&#xff0c;我们享受着便捷生活&#xff0c;却也面临诸多健康隐患。想要维持良好状态&#xff0c;不妨从这些细节入手&#xff0c;解锁科学养生之道。​ 肠道是人体重要的消化器官&#xff0c;也是最大的免疫器官&#xff0c;养护肠道至关重要。日常可多…

Kafka 主题设计与数据接入机制

一、前言&#xff1a;万物皆流&#xff0c;Kafka 是入口 在构建实时数仓时&#xff0c;Kafka 既是 数据流动的起点&#xff0c;也是后续流处理系统&#xff08;如 Flink&#xff09;赖以为生的数据源。 但“消息进来了” ≠ “你就能处理好了”——不合理的 Topic 设计、接入方…

【绘制图像轮廓|凸包特征检测】图像处理(OpenCV) -part7

15 绘制图像轮廓 15.1 什么是轮廓 轮廓是一系列相连的点组成的曲线&#xff0c;代表了物体的基本外形。相对于边缘&#xff0c;轮廓是连续的&#xff0c;边缘不一定连续&#xff0c;如下图所示。轮廓是一个闭合的、封闭的形状。 轮廓的作用&#xff1a; 形状分析 目标识别 …

uniapp中使用<cover-view>标签

文章背景&#xff1a; uniapp中遇到了原生组件(canvas)优先级过高覆盖vant组件 解决办法&#xff1a; 使用<cover-view>标签 踩坑&#xff1a; 我想实现的是一个vant组件库中动作面板的效果&#xff0c;能够从底部弹出框&#xff0c;让用户进行选择&#xff0c;我直…

Kafka常见问题及解决方案

Kafka 是一个强大的分布式流处理平台&#xff0c;广泛用于高吞吐量的数据流处理&#xff0c;但在实际使用过程中&#xff0c;也会遇到一些常见问题。以下是一些常见的 Kafka 问题及其对应的解决办法的详细解答&#xff1a; 消息丢失 一、原因 1.生产端 网络故障、生产者超时…

leetcode 二分查找应用

34. Find First and Last Position of Element in Sorted Array 代码&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…

【Docker】在容器中使用 NVIDIA GPU

解决容器 GPU 设备映射问题&#xff0c;实现 AI 应用加速 &#x1f517; 官方文档&#xff1a;NVIDIA Container Toolkit GitHub 常见错误排查 若在运行测试容器时遇到以下错误&#xff1a; docker: Error response from daemon: could not select device driver ""…