兼容 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.toml
和requirements.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