狙击手挑战
105.14M · 2026-03-12
开篇先简单对比一下两者,
看不懂也没关系,后面我会用实战给你演示。
my_env)。conda activate)。my_env 的路径,把它选上。uv 的逻辑是:项目即环境。
uv init。它会自动生成一个 pyproject.toml(这个文件就是你的“点菜清单”)。pyproject.toml),然后自动把该装的包都装在项目目录下的 .venv 文件夹里。下面开始实战。
我们首先安装一下uv。
在任务栏的搜索框输入 PowerShell,右键点击“以管理员身份运行”。
复制下面这一行命令并粘贴进去(按回车):
PowerShell
powershell -ExecutionPolicy ByPass -c "irm | iex"
3验证安装:
安装完成后,关闭当前的 PowerShell 窗口,重新打开一个。输入以下命令:
PowerShell
uv --version
如果你看到了类似 uv 0.x.x 的版本号,恭喜你,已经装好了!
我把基本语法罗列了出来,看不懂就直接跳到下面的实战。
| 命令 | 用途 | 对应传统命令 |
|---|---|---|
uv venv | 在当前目录创建虚拟环境 (.venv) | python -m venv .venv |
uv pip install <pkg> | 安装指定的 Python 包 | pip install <pkg> |
uv pip freeze | 列出已安装的包及其版本 | pip freeze |
uv pip compile | 将 pyproject.toml 转为 requirements.txt | pip-compile |
uv pip sync | 根据 lock 文件同步环境(删除多余包) | pip-sync |
如果你在开发一个完整的项目,这个是 uv 的项目模式,它会自动处理虚拟环境。
uv init:在当前文件夹初始化一个新的 Python 项目(生成 pyproject.toml)。uv python find :查看当前项目正在使用的是哪个路径下的 Python。uv add <pkg> :添加依赖并自动更新 pyproject.toml 和锁文件。uv remove <pkg> :移除依赖。uv sync:确保项目环境与锁文件完全一致。uv run <script.py> :最强命令之一。它会自动在虚拟环境中运行脚本,如果环境不存在,它会帮你建好。再也不需要 pyenv 或手动下载 Python 了。
uv python install 3.12:下载并安装指定版本的 Python。uv python list:查看系统中已安装的和可供下载的 Python 版本。uv python pin 3.11:固定当前项目使用的 Python 版本。如果你只想临时运行一个工具(比如 ruff 或 black),而不想把它安装到全局:
uvx <tool> :下载、缓存并运行一个 Python 工具。
多说无益,我们来实战一下
简单介绍下我的现状:
我之前的默认环境是Anaconda,然后我现在新建了一个项目,我需要用这个UV来帮我去管理环境
以前的流程是,我需要在Anaconda新建一个环境,然后激活这个环境,然后在里面下载我这个需要的包,而且包如果比较大的话,时间会比较长,流程会比较繁琐
我们来看看UV怎么样
打开cmd
uv python find
可以看到我们用的是Unconductor的默认环境
切换到我们的项目路径
然后执行
uv init
这个问题是因为 uv init 默认会把你的当前文件夹名(“图片”)作为 Python 项目的名字。
但在 Python 的规范里,项目/包名不能包含中文字符,只能使用字母、数字、下划线 _ 或连字符 -。
我们改完文件名再重新回到CMD
回到我们的项目目录
输入
uv init
这一步是进行项目初始化,这样就成功了
我们看看它给我们生成了什么
pyproject.toml
readme.md
.gitigore
.python-version
我们拆解下:
pyproject.toml —— 项目的“大脑”这是最重要的一个文件。在现代 Python 开发中,它取代了以前乱七八糟的 setup.py、requirements.txt 和各种工具的配置文件。
uv add pillow 时,uv 会自动把 pillow 写进这个文件里。以后你把项目发给别人,别人只需要运行 uv sync,uv 就会根据这个文件里的清单,把所有的包原封不动地装好。readme.md —— 项目的“脸面”这是一个标准的 Markdown 文档。
.gitignore —— 项目的“过滤器”uv 自动帮你写好了规则。它会忽略 .venv(虚拟环境文件夹)。因为虚拟环境很大且因人而异,我们通常只分享代码和配置文件(如 pyproject.toml),让别人在自己电脑上重新生成环境。.python-version —— 版本的“锚点”这是 uv 非常贴心的一个设计。
3.12)。uv run 时,uv 会先看一眼这个文件。如果它发现你系统里没装 3.12,它会自动帮你下载一个纯净的 3.12 放在缓存里,确保你的项目永远运行在正确的 Python 版本上。确实很人性化,这真是为python程序员量身定制的。
好,我们回到cmd
我这个项目用到了这个包,我先安装一下
输入
uv add pillow
速度比pip和conda快不少,
从终端输出里,我们可以看到几个非常关键的信息:
uv 发现我的电脑里已经有 D:Anaconda3python.exe 了,所以它很聪明地直接拿这个版本作为基础来创建环境,没让我再等下载。.venv:它在我的 image 文件夹里建了一个 虚拟环境。pillow==12.1.1 已经下载好了。如果我们不想要这个版本的Python
可以在之前就用
uv python install 3.11
我这个是已经构建了
所以我需要用这个命令改一下
uv python pin 3.13
然后我们来同步一下,让它按照说明书来同步环境
输入
uv sync
验证一下看现在是什么环境
输入
uv run python --version
没问题,他还自动下载了 pilow
忘了说了,前面UA还生成了一个main.py
我们运行下
uv run main.py
下面是uv最屌的
他会自动下包,
我们来一起操作一下
用pycharm打开我们的2.2py
开头加上
# /// script
# dependencies = [
# "numpy",
# "pillow",
# ]
# ///
回到cmd
输入
uv run 2.2.py
自动下载了numpy
这个的确能方便我们以后来进行项目管理
我们把pycharm里面的这个环境,也换成我们刚才uv创建的这个环境
点击我们用的这个环境 ,我这里是D:Anaconda3
再点击 解释器设置
添加本地解释器
因为它用的是venv
直接弹窗让我们用这个环境了
点击 选择现有解释器
我们运行一下
缺numpy
为啥没全自动下好?
uv run 确实全自动下包了,但它为了不把你的项目环境搞乱,把包装进了一个“临时环境”。
| 模式 | 你的操作 | 它是怎么干活的 | 结果 |
|---|---|---|---|
| 项目模式 (安家) | uv add numpy | 它把 numpy 写进“说明书”(pyproject.toml),然后装进我们的“项目环境”(.venv)。 | PyCharm 变绿了,以后谁都能用。 |
| 脚本模式 (住酒店) | uv run 2.2.py (带注释) | 它看到注释,认为:“这只是个临时任务,我单独给它下好包跑完就行,别弄脏了主人的特定的.venv。” | PyCharm 依然报红,因为它没进项目环境。 |
我们打开看看,他下载了在临时目录
这样挺高明的,跑代码可以直接用这个临时环境(主环境)
平常项目的时候可以用项目环境
我们回到cmd
输入
uv add numpy
再回到pycharm
执行一下Py
没问题
路径的区别:
C:UsersNameanaconda3envs...。.venv。删掉这个文件夹,环境就没了,非常干净,但你也别误删了。如何迁移依赖? :
如果你的项目原本有一个 requirements.txt,你可以运行:
Bash
uv add -r requirements.txt
这会把旧包全部搬进 uv 的管理体系里,更方便快捷。
和uv互不干扰:
你可以同时安装 Anaconda 和 uv。在同一个项目里,你用 python main.py 调用的是 Anaconda 的默认环境,而用 uv run main.py 调用的是 uv 的环境。不过我建议既然用了 uv,就全程使用 uv 命令。
通过实战可以看到,uv 的优势非常明显:
项目即环境,管理更轻松
.venv,不再需要手动创建、激活环境,也不用在 PyCharm 里翻半天找解释器。pyproject.toml,一条命令就能同步环境,团队协作更顺畅。Python 版本自动化管理
uv python install <version> 下载指定版本,.python-version 锚定项目版本,保证项目在正确的 Python 上运行。依赖安装更快、更智能
uv add <pkg> 将包直接装进 .venv,保持环境干净;uv run <script.py> 可临时运行脚本、自动下包,不污染主环境;IDE 对接无压力
.venv 即可,环境一致性有保证,运行、调试更顺畅。平滑迁移和共存
uv add -r requirements.txt)。如果你是一个像我一样,受够了 Anaconda 臃肿和 Pip 缓慢的开发者,uv 就是那个能让你重新爱上 Python 开发的神器。
Vite 凭什么比 Webpack 快50%?揭秘闪电构建背后的黑科技
我用 OpenClaw 搭了一套运营 Agent,每天自动生产内容、分发、追踪数据——独立开发者的运营平替
2026-03-12
2026-03-12