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