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

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没有哦。

相关文章:

  • SQL 时间转换的CONVERT()函数应用说明
  • 实验二 多线程编程实验
  • [蓝桥杯 2025 省 Python B] 最多次数
  • HashedWheelTimer源码分析
  • Scrapy框架爬虫官网的学习
  • OpenCV 图形API(55)颜色空间转换-----将图像从 RGB 色彩空间转换为 I420 格式函数RGB2I420()
  • 第九章:Agent Protocol Implementation
  • 香港云服务器内存使用率过高如何解决此问题
  • PH热榜 | 2025-04-23
  • 【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
  • 《AI大模型应知应会100篇》第35篇:Prompt链式调用:解决复杂问题的策略
  • day4 pandas学习
  • godot源码编译
  • Oracle EBS R12.2 汉化
  • Java从入门到“放弃”(精通)之旅——String类⑩
  • C#学习1_认识项目/程序结构
  • SAP-SD创建SO时报错‘送达方***未对销售范围 **** ** **定义’
  • App自动化测试多设备并行执行方案
  • jumpserver应用
  • MinIO 教程:从入门到Spring Boot集成
  • 宜昌为何能有一批世界级农业:繁育虫草养殖鲟鱼,柑橘魔芋深耕大健康
  • 山西省援疆前方指挥部总指挥刘鹓已任忻州市委副书记
  • 医改经验如何因地制宜再创新?国家卫健委“以例说法”
  • 外卖江湖战火重燃,骑手、商家、消费者在“摇摆”什么?
  • 一场12年的马拉松,他用声音陪伴中国路跑成长
  • 大理杨徐邱上诉案开庭:当事人称曾接受过两次测谎测试