UV和Mamba包管理工具

​ 最近看朋友写的文章提到UV,UV这个最开始我是以为是User Visit的缩写,是指用户访问网站的行为,结果后来才知道,Python有一款包管理工具也叫这个名字。还有这个Mamba也是最新才发现的,在dy也是看到过次。最近才了解到Python的一个包管理器也叫这个名字。目前我自己在用的是pip和conda。所以就试试看。

一、UV

1、关于UV

UV是一款极其快的Python包管理工具,是由rust语言开发的。旨在替代传统的 pippip-toolsvirtualenv 等工具。有以下亮点。

  • 提供更快的依赖解析和安装速度(比 pip 快 10-100 倍)
  • 提供全面的项目管理,具有通用的锁文件
  • 运行脚本,支持内联依赖元数据
  • 安装和管理Python的版本
  • 包括一个pip兼容接口,可通过熟悉的CLI提高性能。
  • 支持可扩展项目的Cargo风格工作区。
  • 无需Rust或Python即可通过curl或pip安装。

官方网站:https://docs.astral.sh/uv/

github地址:https://github.com/astral-sh/uv

2、UV安装

官方的推荐方式是直接运行安装脚本进行安装

1
2
3
4
5
curl -LsSf https://astral.sh/uv/install.sh | sh
#如果系统中没有curl命令,可以使用wget
wget -qO- https://astral.sh/uv/install.sh | sh
#需要指定UV的版本可以使用一下命令
curl -LsSf https://astral.sh/uv/0.6.17/install.sh | sh

window 操作系统使用powershell去安装

1
2
3
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
#安装指定版本使用如下命令
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.6.17/install.ps1 | iex"

尽量使用管理员身份去运行powershell,不然可能导致命令运行失败。

安装完成后输入一下命令来验证是否成功

1
uv --version

3、UV使用

Python版本

UV安装Python可以在各版本之间切换。可以使用uv的二级子命令去对Python的版本进行管理,有以下相关子命令

1
2
3
4
5
6
7
Commands:
list #显示左右可以安装的Python版本
install #安装一个Python版本
find #搜索一个Python版本
pin #指定一个本地Python的版本到uv中
dir #显示uv下载的Python版本所在的目录
uninstall #卸载一个Python版本

如果需要安装多个Python版本

1
uv python install 3.10 3.11

卸载python版本

1
uv python uninstall 3.11

在当前文件夹使用指定 Python 版本:

1
2
$ uv python pin 3.11
Pinned `.python-version` to `3.11`

uv可以缓存多个python解析的版本

1
uv python list

项目管理

直接使用uv init 命令就可以去创建一个基于uv管理的新项目。二级命令如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Options:
--name <NAME> #项目的名字
--bare #仅创建一个配置文件
--package #将要构建的项目设置为Python包
--no-package #不为构建的项目设置为Python包
--app #为项目创建一个应用程序
--script #创建一个脚本
--description <DESCRIPTION> #设置一个项目描述
--no-description #不需要项目描述
--vcs <VCS> #为项目初始化一个版本控制系统[possible values: git, none]
--build-backend <BUILD_BACKEND> #为项目初始化所选的构建后端[possible values: hatch, flit, pdm, poetry, setuptools, maturin, scikit]
--no-readme #不去创建readme文件
--author-from <AUTHOR_FROM> #填写作者信息到配置文件中[possible values: auto, git, none]
--no-pin-python #不为项目创建`.python-version`文件
--no-workspace #避免工作区冲突,会创建独立的工作区

使用init去初始化一个项目

1
2
3
4
5
6
uv init hello-world
uv工程默认会生成4个文件:
.python-version:记录当前工程的Python版本。
main.py:主脚本。
pyproject.toml:记录当前uv工程的依赖情况。
README.md:工程的说明文件。

可以在创建工程的时候直接指定python解析的版本

1
uv init test -p 3.11

激活虚拟环境

1
.venv\Scripts\activate

库管理

下载第三方的库可以使用

1
uv add pandas

移除某个库

1
uv remove pandas

查看虚拟环境中的环境依赖树

1
uv tree

也可以通过uv pip去下载三方库

1
uv pip install pandas

注:通过uv pip安装的库,需要通过uv pip list去查看

1
uv pip list

使用uv pip安装的第三方库是不会记录在pyproject.toml文件中的。

在使用别人的工程项目时可以一键克隆别人的环境

1
uv sync

二、Mamba

1、关于Mamba

​ Mamba 是一个用 C++ 重新实现的 Conda 包管理器。它旨在提供比传统 Conda 更快的包管理和依赖解析速度。Mamba 的核心部分使用 C++ 编写,以确保高效性和性能。同时,Mamba 也使用了 Python 和其他一些辅助语言来实现其功能。

官方地址:https://mamba.readthedocs.io/

github地址:https://github.com/mamba-org/mamba

使用了一段时间个人感觉还不错。

2、Mamba安装

​ 因为这些工具基本都在国外的网站上。uv安装也是,挺慢的,所以这里的mamba的安装我们直接使用国内的镜像去安装。mamba官方是提供了安装脚本去安装,这里就不在去使用脚本,直接用国内镜像比较快速。

安装最新的 Mamba,建议通过安装 Miniforge 来实现,因为 Miniforge 默认包含 Mamba。

miniforge的github地址:https://github.com/conda-forge/miniforge。

miniforge下载南京大学镜像:https://mirror.nju.edu.cn/github-release/conda-forge/miniforge/LatestRelease/。下载对应操作系统的安装包即可。

miniforge不仅包括 Mamba,还包括 Python、conda 和其他工具,适合数据科学项目。

如果已有 Anaconda,建议先卸载,以避免渠道冲突。

这里以window操作系统为例,选择x86的exe文件直接下载安装即可

image-20250430153514546

在安装的时候尽量不要选择C盘,因为后面这个文件目录会越来越大。

安装成功之后,需要把mamba的安装目录的bin文件目录和script目录添加到系统的环境变量中方便后续在命令行直接使用。

1、下载miniforge的Linux安装脚本

1
wget -qO- https://mirror.nju.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-25.3.0-1-Linux-x86_64.sh

或者是直接去镜像站下载Linux版本的安装脚本,如下。

image-20250430162752594

2、给脚本赋予可执行权限

1
chmod +x Miniforge3-25.3.0-1-Linux-x86_64.sh

3、执行安装脚本

1
sh Miniforge3-25.3.0-1-Linux-x86_64.sh

根据提示进行安装即可。

4、验证安装是否成功,运行一下命令,出现mamba的版本信息就安装成功了。

1
mamba info

3、Mamba使用

创建和激活一个虚拟环境。

1
mamba create -n test python=3.9

激活环境

1
mamba activate test

退出当前激活的环境

1
deactivate

安装软件包

1
mamba install 包名

查看当前环境中已经安装的包

1
mamba list

查看环境信息

1
mamba info --envs