小白的uv包管理工具使用

复制代码
`uv` 是由 **Astral**(开发了 Ruff、Rye 等知名 Python 工具的团队)于 2024 年推出的一个**超高速 Python 包安装器和解析器**,旨在**替代 pip、pip-tools、virtualenv、poetry install 等传统工具的部分功能**,并以极致的速度和兼容性为目标。
特性 uv pip Poetry
主要定位 高性能包安装器与依赖解析器 官方基础包安装工具 全功能项目与依赖管理工具
语言实现 Rust Python Python
安装速度 极快(10--100 倍于 pip) 慢(单线程为主) 中等(依赖解析较慢)
依赖解析 支持确定性解析,生成锁定文件 无完整依赖解析,子依赖可能漂移 支持确定性解析,生成 poetry.lock
虚拟环境管理 内置 uv venv 不支持,需配合 venv/virtualenv 自动创建和管理
锁定文件支持 支持(通过 uv pip compile 生成 requirements.txt) 不支持 支持(poetry.lock)
同步环境(卸载多余包) 支持(uv pip sync 不支持 支持(poetry install 自动同步)
项目元数据管理 不支持 不支持 支持(作者、版本、入口点等在 pyproject.toml 中定义)
包发布(上传到 PyPI) 不支持 需配合 twine 等工具 支持(poetry publish
配置文件格式 兼容 requirements.txt、pyproject.toml 等标准格式 同左 使用自定义风格的 pyproject.toml
与现有生态兼容性 高(命令模仿 pip,无缝替换) 最高(官方标准) 中(锁定文件格式私有,与 requirements.txt 不直接互通)
学习成本 低(类似 pip) 极低 中高(需理解其工作流)
适用场景 CI/CD 加速、Docker 构建、快速环境搭建 快速试用、简单脚本、底层依赖 开发可发布包、中大型项目、团队协作

UV包工具快速使用

1. UV的安装

已安装python

PowerShell 复制代码
pip install uv 

未安装python

PowerShell 复制代码
curl -LsSf https://astral.sh/uv/install.sh | sh #下载到/usr/local/bin
2. UV的常见指令
PowerShell 复制代码
uv init name           # uv初始化,生成name文件夹
uv add name            # 安装name插件
uv venv --python 3.12  # 生成虚拟环境并指定python版本
uv remove              # 从项目中删除依赖项。    
uv sync                # 将项目的依赖项与环境同步。    
uv lock                # 为项目的依赖项创建一个 lockfile。    
uv run                 # 在项目环境中执行命令。    
uv tree                # 查看项目的依赖关系树。    
uv build               # 将项目构建到分发存档中。    
uv publish             # 将项目发布到包索引。

UV包管理工具的结构

  1. .gitignore
  • 作用 :告诉 Git 哪些文件或目录不需要纳入版本控制 。(在.gitignore存在的所有文件都不纳入版本控制)

  • 在 uv 项目中的典型内容

PowerShell 复制代码
# Python-generated files
__pycache__/
*.py[oc]
build/
dist/
wheels/
*.egg-info

# Virtual environments
.venv

虽然 uv 默认创建的虚拟环境名为 .venv(位于项目根目录),但你可以通过 uv venv --name myenv 指定其他名称。为避免将本地环境提交到仓库,必须在 .gitignore 中排除虚拟环境目录。

  1. .python-version
  • 作用 :记录项目所需的 Python 版本号 (如 3.11.9)。

  • 来源 :该文件通常由 pyenvrye 等 Python 版本管理工具读取。

  • 与 uv 的关系
    uv 本身不读取 .python-version ,但开发者常配合 pyenv 使用:

    • pyenv 根据此文件自动切换 Python 版本;

    • uv 在该 Python 环境下创建虚拟环境并安装依赖。

  1. main.py
  • 作用 :项目的主入口脚本

  • 与 uv 无直接关联 ,但 uv 安装的依赖可在此文件中被导入使用。

  • 说明
    uv 不关心你的代码结构,只负责管理依赖。你可以有 main.pyapp/ 目录、src/ 布局等任意形式。

  1. pyproject.toml
  • 作用核心配置文件,定义项目的依赖、元数据、构建后端等。

  • 在 uv 工作流中的关键角色

    • uv 会读取其中的 [project.dependencies][project.optional-dependencies] 来安装依赖;

    • 支持 PEP 621 标准格式,与 Poetry、Hatch、setuptools 等工具兼容;

    • 可替代传统的 requirements.txt(更结构化、支持开发依赖分组)。

    PowerShell 复制代码
    [project]
    name = "mcp-client"
    version = "0.1.0"
    description = "Add your description here"
    readme = "README.md"
    requires-python = ">=3.13"
    dependencies = [
        "httpx>=0.28.1",
        "mcp>=1.25.0",
        "openai>=2.14.0",
        "python-dotenv>=1.2.1",
    ]

uv的使用依赖的方法

PowerShell 复制代码
uv pip install -e .  # 安装当前项目及其依赖(含开发依赖需加 -e .[dev])
uv pip compile pyproject.toml -o requirements.txt  # 生成锁定文件
  1. README.md
  • 作用:项目说明文档,介绍功能、安装步骤、使用方法等。
相关推荐
玄同7656 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
小瑞瑞acd6 小时前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习
火车叼位6 小时前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位6 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior7 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Katecat996637 小时前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
玩大数据的龙威7 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep7 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手7 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储