punchy
Stay foolish Stay hungry

uv_learn

2025-06-26 tools

包管理器:UV

包管理器就是在python项目中,管理各种依赖的安装和卸载,环境的构建,方便开发者能够不被各种版本依赖困扰。uv是使用rust语言开发的一款包管理器,使用起来非常便捷,最大的感受是安装各种包的时候速度非常的快。

安装

使用pipx安装

  • pipx install uv

使用uv新建一个项目

  • mkdir proj
  • cd proj
  • uv init:这会创建一个python项目所需要的所有文件
1
2
3
4
5
6
7
8
9
10
.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

接下来我们可以使用uv pip install 安装包,但是这样安装的包的信息不会立即同步到toml文件和lock文件中,如果使用uv add package命令,则可以让包在安装好后,相关星系能够同步到toml文件和lock文件。

其中toml文件在刚创建好的时候会包含项目的元信息,系统依赖项,构建系统的要去比如:

1
2
3
4
5
6
7
8
9
10
11
[project]
name = "uv-test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"numpy>=2.3.1",
"pandas>=2.3.0",
"pillow>=11.2.1",
]

其中lock文件是依赖锁文件,记录所有依赖项及其精确版本,确保在不同平台上可复现的安装,这个是uv自动管理的,无需手动编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[[package]]
name = "numpy"
version = "2.3.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload-time = "2025-06-21T12:28:33.469Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b0/c7/87c64d7ab426156530676000c94784ef55676df2f13b2796f97722464124/numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070", size = 21199346, upload-time = "2025-06-21T11:47:47.57Z" },
## 后面还有一大堆

[[package]]
name = "pandas"
version = "2.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "python-dateutil" },
{ name = "pytz" },
{ name = "tzdata" },
]
sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490, upload-time = "2025-06-05T03:27:54.133Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/96/1e/ba313812a699fe37bf62e6194265a4621be11833f5fce46d9eae22acb5d7/pandas-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8adff9f138fc614347ff33812046787f7d43b3cef7c0f0171b3340cae333f6ca", size = 11551836, upload-time = "2025-06-05T03:26:22.784Z" },
  • source .venv/bin/activate: 激活环境
  • 使用uv add来安装包
  • 安装完使用uv sync来进行同步,这个命令会优先根据lock文件来安装依赖

使用uv从已有项目中构建环境

如果以及有一个项目,这个项目使用toml文件写明了项目需要的依赖,可以使用uv来快速的构建项目

  • 首先创建一个虚拟环境:uv venv,然后激活
  • 运行命令:uv pip install .:uv 会在当前目录下的toml文件,根据它来安装所有的依赖
  • uv lock:可选,生成uv.lock文件

Author: 武丢丢

Link: http://example.com/2025/06/26/uv-learn/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
拼多多笔试
NextPost >
docker-learn
CATALOG
  1. 1. 包管理器:UV
    1. 1.1. 安装
    2. 1.2. 使用uv新建一个项目
  2. 2. 使用uv从已有项目中构建环境