网站首页 > 技术文章 正文
Python 的发展与包管理的进步密切相关,从手动安装到像 pip 和 poetry 这样的工具。然而,随着项目复杂度的增加,传统工具在速度和效率方面常常力不从心。
uv 是一款前沿的 Python 包和项目管理器,用 Rust 编写而成,旨在改变这一现状。它集成了 pip、poetry 和 virtualenv 等工具的功能,能够高效地处理依赖管理、脚本执行和项目构建等任务,同时提供卓越的性能。它与 pip 命令无缝兼容,无需额外的学习曲线。
在本教程中,我们将探索如何安装 uv 并充分利用其功能。从设置项目和管理依赖关系,到运行脚本并利用其增强的 pip 接口。
一、pip 的局限性
pip 是一种广泛使用的 Python 包管理系统,用于安装和管理软件包。然而,尽管它很受欢迎,但常常被批评为 Python 中最慢的包管理工具之一。关于“pip install 太慢”的抱怨在开发者论坛和讨论中屡见不鲜。
pip 的另一个重大缺陷是对依赖关系配置文件的敏感性。如果这些文件编写或维护不当,可能会导致依赖关系“异味”,从而增加项目的复杂性并降低可维护性。
此外,pip 在恢复运行时环境时无法始终准确匹配 Python 代码。这种不匹配可能导致依赖关系推断的成功率较低,难以可靠地重建项目环境。
二、什么是 uv
uv 是一款由 ruff 的开发者创建的现代高性能 Python 包管理器,用 Rust 编写而成。它被设计为 pip 和 pip-tools 的直接替代品,提供卓越的速度和与现有工具的兼容性。
uv 的关键特性包括支持可编辑安装、Git 和 URL 依赖关系、约束文件、自定义索引等。它的标准兼容虚拟环境可以与其他工具无缝协作,避免了锁定或定制化问题。uv 是跨平台的,支持 Linux、Windows 和 macOS,并且已经针对 PyPI 索引进行了广泛测试。
uv 专注于简单性、速度和可靠性,解决了开发者常见的痛点,如安装速度慢、版本冲突和复杂的依赖关系管理,为现代 Python 开发提供了一个直观的解决方案。
三、uv安装
安装 uv 非常快速且简单。您可以选择独立安装程序,也可以直接从 PyPI 安装。
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
pip install uv
pipx install uv
brew install uv
pacman -S uv
在使用 uv 之前,我们需要将 uv 路径添加到环境变量中。
对于 Linux 和 macOS,通过以下命令修改 PATH 环境变量:
export PATH="$HOME/.local/bin:$PATH"
对于 Windows,要将目录添加到用户和系统的 PATH 环境变量中,请在搜索栏中搜索“环境变量”。在用户变量 / 系统变量下,选择 Path 变量,点击编辑,然后点击新建并添加所需路径。
%USERPROFILE%\.local\bin
安装完成后,在终端运行 uv 命令以验证是否安装正确。
比如, uv -V 查看版本。
四、创建虚拟环境
每个 Python 安装版本都有一个在使用 Python 时激活的环境。可以将包安装到环境中,以便在 Python 脚本中使用其模块。通常,不建议修改 Python 安装的环境,尤其是操作系统自带的 Python 安装,因为它们通常会自行管理这些包。虚拟环境是一种轻量级的方法,可以将包与 Python 安装的环境隔离。与 pip 不同,uv 默认要求使用虚拟环境。
使用 uv 创建虚拟环境非常简单。使用以下命令以及您希望的环境名称来创建。
uv venv
运行以下命令激活虚拟环境。
# On macOS and Linux.
source .venv/bin/activate
# On Windows.
.venv\Scripts\activate
可以指定特定的名称或路径,例如,在 my-name 创建虚拟环境:
uv venv my-name
输出:Using CPython 3.13.3
Creating virtual environment at: my-name
Activate with: source my-name/bin/activate
还可以指定 Python 版本,例如,创建一个使用 Python 3.11 的虚拟环境:
uv venv --python 3.11
请注意,这需要系统上已安装了所请求的 Python 版本。如果未安装,uv 将会为你下载 Python。
五、安装包
在虚拟环境中安装包的过程非常熟悉。以下是各种安装方法:
uv pip install flask
uv pip install -r requirements.txt
uv pip install -e .
uv pip install "package @"
uv pip install "flask[dotenv]"
六、使用 uv 构建 Flask 应用
让我们通过 uv 探索一些与项目相关的命令。首先,初始化一个名为“sample-project”的 Python 项目。
uv init sample-project
进入 sample-project 目录。uv 会初始化项目,并生成一些基本文件,如 main.py、pyproject.toml、README.md 等。
项目主要包含两个关键文件:
- pyproject.toml - 项目配置文件,定义了项目元数据和依赖要求
- main.py - 包含主程序入口点
使用 run 命令运行示例 Python 文件。此过程会首先创建虚拟环境文件夹,然后运行 Python 文件。
uv run main.py
输出:
Using CPython 3.13.3
Creating virtual environment at: .venv
Hello from sample-project!
使用 uv 安装 Python 是可选的,因为 uv 与现有的 Python 安装完全兼容。然而,如果希望通过 uv 安装 Python,可以通过以下简单命令完成:
uv python install 3.13.3
这种方法通常比传统方法更方便、更可靠,因为它无需管理仓库或下载安装程序。只需执行命令,即可完成设置并立即使用。
七、工具
可以通过 uv 命令安装和使用 CLI 工具。例如,可以安装 huggingface_hub 工具,以便从 Hugging Face 仓库拉取和推送文件。
使用以下命令通过 uv 安装 huggingface_hub:
uv tool install huggingface_hub
显示所有已安装的工具:
uv tool list
以下是一些使用 uv 进行常见操作的速查表:
猜你喜欢
- 2025-05-14 Python中的模块 (Module)和包 (Package)
- 2025-05-14 python中的模块、库、包有什么区别?
- 2025-05-14 用Python快速创建N个Excel文件
- 2025-05-14 Python NumPy库的安装和使用
- 2025-05-14 python基础模块三剑客:sys、os、shutil(增加示例代码)
- 2025-05-14 python 中安装lxml包出现的问题及技术解答
- 2025-05-14 Linux和Windows下:Python Crypto模块安装方式区别
- 2025-05-14 Python + Pycrypto 加密模块的正确使用姿势
- 2025-05-14 python进阶实战:如何使用自定义模块(包)?
- 05-27程序员用 Python 爬取抖音高颜值美女
- 05-27YOLO v3、FaceNet和SVM的人脸检测识别系统源码(python)分享
- 05-27「工具推荐」世界上最简单的人脸识别库 44.7 star
- 05-27开源人脸识别系统源码推荐
- 05-27Go 人脸识别教程
- 05-27Python 深度学习之人脸识别(yolo+facenet)
- 05-27简单的Py人脸识别
- 05-27Python编程 - 基于OpenCV实现人脸识别(实践篇)爬虫+人脸识别
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 82℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)