当前位置:首页>python>更好的管理Python项目:uv

更好的管理Python项目:uv

  • 2026-10-11 07:17:42
更好的管理Python项目:uv

UV 的使用

最近看到很多人说uv很好用,于是就想试一下,现在已经用了一段时间了,我已经放弃了之前常用的 anaconda,转而使用uv了。

对于管理python环境来说,uv确实是非常好用的工具。它不仅可以轻松创建和管理虚拟环境,还能方便地安装和更新包。

什么是 uv?

uv 是一个现代化的 Python 包管理工具,旨在简化 Python 环境的创建和包的安装。它提供了一个简单的命令行界面,让用户能够快速地创建虚拟环境、安装依赖项,并且支持多种 Python 版本。

简单来说,它就像是一个更轻量级、更快速的替代品,类似于 pip 和 virtualenv 的结合体。

好在哪儿?

1、 轻。Anaconda 太重了动则几个 G。

2、 创建虚拟环境真的是非常快:使用 uv 创建虚拟环境非常快速,几乎是瞬间完成的。

3、 安装包很快:使用 uv 安装包的速度也非常快,比 pip / conda 快的多。

4、 支持多个 Python 版本,可以轻松切换。

5、 依赖管理很好,可以自动解决依赖关系,它会把所有依赖项的关系链理清楚,能够锁定版本,确保环境的一致性。

6、 同步功能非常好。使用 uv sync 可以一键同步环境,确保不同机器上的环境一致,不需要写 requirements.txt。

7、 有一点我单独拿出来,anaconda 每次都要激活 activate 才能使用环境,在批处理脚本里很麻烦,而 uv 直接在命令行里 run 一下就能使用当前的虚拟环境了,非常方便。

8、 安装包的时候,uv 会记录安装的包和版本信息,生成一个 lock 文件,这样就能确保环境的一致性,可以理解为:pip 每安装一个包就会更新 requirements.txt,而 uv 则是安装包的时候会更新 lock 文件,这个动作不需要我们手动操作。

9、 支持硬链接,同一个盘符下(项目和UV是否在同一个盘下)创建虚拟环境时,uv 会使用硬链接来节省磁盘空间,这样就不需要为每个虚拟环境复制一份 Python 解释器了。

使用方式

安装

安装 uv 非常简单,如果系统已经安装了 Python/pip, 可以通过 pip 安装:

pip install uv

如果没有安装 Python:

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Windows 可能需要主题,Powershell 的安全策略可能需要调整一下,调整方式如下,在管理员模式下运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

安装完成后,就可以使用 uv 来创建虚拟环境了:

创建项目

uv init myprojectcd myproject

如果需要指定 Python 版本:

uv init myproject --python 3.10cd myproject

这条命令会在当前目录下创建一个名为 myproject 的新目录,并在其中初始化一个新的 Python 项目。它会自动创建一个虚拟环境,并生成一个 pyproject.toml 文件来管理项目的依赖项。

目录结构如下:

myproject/├── .gitignore├── .python-version├── main.py├── pyproject.toml└── README.md

安装包

我们尝试安装一个包:

uv add requests

这条命令会安装 requests 包,并且自动更新 pyproject.toml 和 lock 文件,记录安装的包和版本信息。

运行项目

uv run main.py

这条命令会在当前的虚拟环境中运行 main.py 文件,无需手动激活环境,它会调用 .venv 目录下的 Python 解释器。

如果这是普通的 项目,uv 会优先使用当前目录下的 .venv 目录中的 Python 解释器来运行,如果没有找到 .venv 目录,uv 会继续往上级目录查找,直到找到一个包含 .venv 目录的项目为止,如果一直没有找到,uv 就会使用系统的 Python 解释器来运行。

其他运行方式:

uv run python main.py
uv run pip install requests

其他功能

uv sync

这条命令会根据 pyproject.toml 和 lock 文件来同步环境,安装缺失的包,更新过时的包,确保环境的一致性。

比方说我们在另一台机器上克隆了这个项目,运行 uv sync 就能自动安装所有依赖项,确保环境和原来的一模一样,不需要手动安装每个包。

设置国内镜像源:

uv config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

还有几个环境变量:

UV_HOME=uv 的配置文件和数据存储目录,默认是用户主目录下的 .uv 目录。UV_INSTALL_DIR=uv 安装目录,默认是 UV_HOME 下的 install 目录, 可以在安装前设置这个环境变量来指定安装目录。UV_LINK_MODE=uv 创建虚拟环境时使用的链接模式,默认是 "copy",可以设置为 "hard" 来使用硬链接,或者 "symlink" 来使用符号链接。UV_PYTHON_INSTALL_DIR=uv 安装 Python 版本的目录,默认是 UV_HOME 下的 python 目录,可以在安装前设置这个环境变量来指定 Python 安装目录。

缺点

当前我主要就遇到一个问题,就是 uv 的两个源,下载python和pip包。在国内的环境下,pip包倒是可以通过设置国内镜像源来解决,但下载python的源就比较麻烦了,uv默认是从国外的源下载python的,下载指定python版本就比较慢了,需要配置好网络环境。如果系统已经安装了python,uv也可以直接使用系统的python,这样就不需要下载了。

总结

好用。强烈推荐。

最新文章

随机文章