兼容 pip 的用法

在使用 pip 的时候,最常用的几个操作就是创建 Python 虚拟环境和维护环境和项目中所依赖的库。uv 通过兼容 pip 的操作接口,也支持了与 pip 基本相同的功能,方便在不同种工具间的切换。

虚拟环境管理

uv 对于虚拟环境的管理是通过venv子命令来完成的,默认情况下执行命令uv venv会在当前目录下创建一个名为.venv的目录来存放虚拟环境,并在其中完成虚拟环境的建立。如果不想在.venv目录中创建虚拟环境,那么可以使用uv venv <path>的命令格式来给uv venv命令指定一个要存放虚拟环境的目录。

同样在不给定任何参数的情况下,uv venv会自动创建一个对应目前系统中已经安装的最高版本 Python 的虚拟环境,但是往往项目的开发会对 Python 有一定的要求,这就可以使用--python参数来指定uv venv要创建的虚拟环境需要采用哪一个 Python 版本。如果指定的 Python 版本在本地机器上没有安装,那么 uv 会自动下载一个指定版本的 Python。

通过uv venv创建的虚拟环境,同样可以如同使用pip -m venv .venv命令创建的虚拟环境一样,使用source .venv/bin/activate来激活,并使用deactivate来关闭。

向虚拟环境中安装依赖

使用 pip 安装依赖的时候使用的是pip install命令,相应的,使用 uv 模仿 pip 安装依赖的时候,使用的则是pip子命令下的uv pip install命令。uv pip install命令在一个项目目录中执行安装的时候,如果项目目录中存在名为.venv的虚拟环境,那么 uv 将会把依赖直接安装到虚拟环境中。

在未激活虚拟环境时,pip 会将依赖直接安装到系统的 Python 环境中,uv 要实现这种操作则需要执行uv pip install --system命令。--system参数会指示 uv 依赖的安装位置。

如果系统中安装了多个 Python 版本,那么将--system参数结合--python参数就可以选择一个指定的在系统中安装的 Python 环境来进行修改了。

requirements.txt中安装依赖

requirements.txt文件是通过pip freeze生成的,用来记录当前环境中已经安装过的依赖的文件。uv 因为使用了pyproject.toml来记录项目的依赖,所以其实已经没有必要再使用requirements.txt文件了。但是很多就项目还依旧是使用requirements.txt文件的,所以 uv 在uv pip命令里对直接从requirements.txt文件中安装依赖提供了支持。

requirements.txt文件中安装依赖可以执行以下命令:

uv pip install -r requirements.txt

相似的,还可以从pyproject.toml文件中安装依赖。

uv pip install -r pyproject.toml

Python 环境中安装的包可能与pyproject.tomlrequirements.txt中记录的依赖不同,而且通过uv pip install安装的包一般是不会被删除的,除非它们与锁定文件存在冲突。所以为了保持环境中安装的包与锁定文件一致,所以在从文件安装以来的时候,尽量使用uv pip sync命令代替,所以上面的两个命令就可以更换成以下形式。

uv pip sync requirements.txt
un pip sync pyproject.toml

删除依赖

删除依赖就比较简单了,可以直接执行命令uv pip uninstall并指定要删除的依赖名称即可。

列举依赖

列举依赖主要用来查询当前环境中已经安装的依赖,这可以使用uv pip list命令来完成。但是需要注意的是,这个命令输出的内容并不能作为requirements.txt文件的内容。如果要输出requirements.txt文件,那么还需要使用uv pip freeze命令来完成。

除了可以使用uv pip freeze来将依赖冻结到requirements.txt文件中,uv 还提供了使用uv pip compile命令来将pyproject.toml文件中的依赖直接输出到requirements.txt文件中的方法,

以下是实现这个功能的命令:

uv pip compile pyproject.toml -o requirements.txt