UV实战教程,我啥要从Anaconda切换到uv来管理包?

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文对比Anaconda“手动挡”与uv“全自动挡”环境管理:uv以“项目即环境”为核心,支持`uv init`一键初始化、自动下载Python、智能依赖管理(`uv add/sync/run`)及PyCharm无缝对接,大幅提升Python开发效率与协作体验。(239字)

开篇先简单对比一下两者

看不懂也没关系,后面我会用实战给你演示。

1. 以前 Anaconda 的逻辑:手动挡

  1. 第一步: 你先去 Anaconda 软件里手动创建一个环境(比如叫 my_env)。
  2. 第二步: 你得“激活”它(conda activate)。
  3. 第三步: 你在里面安装包。
  4. 第四步: 你去 PyCharm 那个长长的列表里,翻半天找到这个 my_env 的路径,把它选上。

2. 现在 uv 的逻辑:全自动挡

uv 的逻辑是:项目即环境

  1. 不用提前建环境: 你只需要在项目文件夹里输入 uv init。它会自动生成一个 pyproject.toml(这个文件就是你的“点菜清单”)。
  2. 自动管理解释器: 你以前要自己下载安装 Python(没python用不了pip),现在你在项目里说一句“我要用 Python 3.12”,uv 发现你没装的话,它会静默帮你下载好。你不需要去官网找安装包。
  3. PyCharm 对接更简单: 在 PyCharm 里,你直接选“uv”,它会自动扫描项目里的那个清单(pyproject.toml),然后自动把该装的包都装在项目目录下的 .venv 文件夹里。

下面开始实战。

我们首先安装一下uv。

1. 安装UV步骤

  1. 在任务栏的搜索框输入 PowerShell,右键点击“以管理员身份运行”。

  2. 复制下面这一行命令并粘贴进去(按回车):

    PowerShell

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

    image-20260310043130458

3验证安装:

安装完成后,关闭当前的 PowerShell 窗口,重新打开一个。输入以下命令:

PowerShell

   uv --version

如果你看到了类似 uv 0.x.x 的版本号,恭喜你,已经装好了!

image-20260310043336950

我把基本语法罗列了出来,看不懂就直接跳到下面的实战。

这个是和pip的对比

  • | 命令 | 用途 | 对应传统命令 |
    | -------------------------- | ------------------------------------------- | ---------------------- |
    | 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 的项目模式,它会自动处理虚拟环境。

  • uv init:在当前文件夹初始化一个新的 Python 项目(生成 pyproject.toml)。
  • uv python find :查看当前项目正在使用的是哪个路径下的 Python。
  • uv add <pkg>:添加依赖并自动更新 pyproject.toml 和锁文件。
  • uv remove <pkg>:移除依赖。
  • uv sync:确保项目环境与锁文件完全一致。
  • uv run <script.py>最强命令之一。它会自动在虚拟环境中运行脚本,如果环境不存在,它会帮你建好。

Python 版本管理

再也不需要 pyenv 或手动下载 Python 了。

  • uv python install 3.12:下载并安装指定版本的 Python。
  • uv python list:查看系统中已安装的和可供下载的 Python 版本。
  • uv python pin 3.11:固定当前项目使用的 Python 版本。

工具运行 (uvx)

如果你只想临时运行一个工具(比如 ruffblack),而不想把它安装到全局:

  • uvx <tool>:下载、缓存并运行一个 Python 工具。

    比如:uvx ruff check .

多说无益,我们来实战一下

简单介绍下我的现状:

我之前的默认环境是Anaconda,然后我现在新建了一个项目,我需要用这个UV来帮我去管理环境

以前的流程是,我需要在Anaconda新建一个环境,然后激活这个环境,然后在里面下载我这个需要的包,而且包如果比较大的话,时间会比较长,流程会比较繁琐

我们来看看UV怎么样

打开cmd

image-20260310045430258

uv python find

可以看到我们用的是Unconductor的默认环境

image-20260310045626763

切换到我们的项目路径

image-20260310045740521

然后执行

uv init

image-20260310050024418

这个问题是因为 uv init 默认会把你的当前文件夹名(“图片”)作为 Python 项目的名字。

但在 Python 的规范里,项目/包名不能包含中文字符,只能使用字母、数字、下划线 _ 或连字符 -

我们改完文件名再重新回到CMD

回到我们的项目目录

image-20260310051111191

输入

uv init

这一步是进行项目初始化,这样就成功了

image-20260310051253208

我们看看它给我们生成了什么

pyproject.toml

readme.md

.gitigore

.python-version

image-20260310051442583我们拆解下:

1. pyproject.toml —— 项目的“大脑”

这是最重要的一个文件。在现代 Python 开发中,它取代了以前乱七八糟的 setup.pyrequirements.txt 和各种工具的配置文件。

  • 干嘛用的:它记录了项目的元数据(名字、版本、作者)以及项目依赖
  • 怎么用:当你运行 uv add pillow 时,uv 会自动把 pillow 写进这个文件里。以后你把项目发给别人,别人只需要运行 uv syncuv 就会根据这个文件里的清单,把所有的包原封不动地装好。

2. readme.md —— 项目的“脸面”

这是一个标准的 Markdown 文档。

  • 干嘛用的:用来写项目的自我介绍。

3. .gitignore —— 项目的“过滤器”

  • 干嘛用的:用 Git 来管理代码,这个文件会告诉 Git:“哪些东西不要上传”。
  • 为什么重要uv 自动帮你写好了规则。它会忽略 .venv(虚拟环境文件夹)。因为虚拟环境很大且因人而异,我们通常只分享代码和配置文件(如 pyproject.toml),让别人在自己电脑上重新生成环境。

4. .python-version —— 版本的“锚点”

这是 uv 非常贴心的一个设计。

  • 干嘛用的:它里面只写了一个版本号(比如 3.12)。
  • UV最大优势:当你在这个文件夹下运行 uv run 时,uv 会先看一眼这个文件。如果它发现你系统里没装 3.12,它会自动帮你下载一个纯净的 3.12 放在缓存里,确保你的项目永远运行在正确的 Python 版本上。

确实很人性化,这真是为python程序员量身定制的。

好,我们回到cmd

我这个项目用到了这个包,我先安装一下

输入

uv add pillow

速度比pip和conda快不少,

从终端输出里,我们可以看到几个非常关键的信息:

  1. 它借用了 Anacondauv 发现我的电脑里已经有 D:\Anaconda3\python.exe 了,所以它很聪明地直接拿这个版本作为基础来创建环境,没让我再等下载。
  2. 创建了 .venv:它在我的 image 文件夹里建了一个 虚拟环境。
  3. 安装成功pillow==12.1.1 已经下载好了。

image-20260310052300907

如果我们不想要这个版本的Python

可以在之前就用

uv python install 3.11

我这个是已经构建了

所以我需要用这个命令改一下

uv python pin 3.13

image-20260310052824206

然后我们来同步一下,让它按照说明书来同步环境

输入

uv sync

image-20260310053154326

验证一下看现在是什么环境

输入

uv run python --version

没问题,他还自动下载了 pilow

uv run main.py

忘了说了,前面UA还生成了一个main.py

我们运行下

uv run main.py

image-20260310053434683

下面是uv最屌的

他会自动下包,

我们来一起操作一下

用pycharm打开我们的2.2py

开头加上

# /// script
# dependencies = [
#   "numpy",
#   "pillow",
# ]
# ///

image-20260310053841880

回到cmd

输入

uv run 2.2.py

自动下载了numpy

image-20260310054225587

这个的确能方便我们以后来进行项目管理

image-20260310054303800

我们把pycharm里面的这个环境,也换成我们刚才uv创建的这个环境

点击我们用的这个环境 ,我这里是D:Anaconda3

再点击 解释器设置

image-20260310054425028

添加本地解释器

image-20260310054450421

因为它用的是venv

直接弹窗让我们用这个环境了

点击 选择现有解释器

image-20260310054733593

我们运行一下

缺numpy

image-20260310055223362

为啥没全自动下好?

uv run 确实全自动下包了,但它为了不把你的项目环境搞乱,把包装进了一个“临时环境”。

模式 你的操作 它是怎么干活的 结果
项目模式 (安家) uv add numpy 它把 numpy 写进“说明书”(pyproject.toml),然后装进我们的“项目环境”(.venv)。 PyCharm 变绿了,以后谁都能用。
脚本模式 (住酒店) uv run 2.2.py (带注释) 它看到注释,认为:“这只是个临时任务,我单独给它下好包跑完就行,别弄脏了主人的特定的.venv。” PyCharm 依然报红,因为它没进项目环境。

我们打开看看,他下载了在临时目录

这样挺高明的,跑代码可以直接用这个临时环境(主环境)

平常项目的时候可以用项目环境

image-20260310055609163

我们回到cmd

输入

uv add numpy

image-20260310055749251

再回到pycharm

执行一下Py

没问题

image-20260310055837787

⚠️ 给 Anaconda 用户的3 个提醒

  1. 路径的区别

    • Anaconda:环境通常存在 C:\Users\Name\anaconda3\envs\...
    • uv:环境默认就在你项目文件夹里的 .venv。删掉这个文件夹,环境就没了,非常干净,但你也别误删了。
  2. 如何迁移依赖?

    如果你的项目原本有一个 requirements.txt,你可以运行:

    Bash

    uv add -r requirements.txt
    

    这会把旧包全部搬进 uv 的管理体系里,更方便快捷。

  3. 和uv互不干扰

    你可以同时安装 Anaconda 和 uv。在同一个项目里,你用 python main.py 调用的是 Anaconda 的默认环境,而用 uv run main.py 调用的是 uv 的环境。不过我建议既然用了 uv,就全程使用 uv 命令。

总结一下:为什么从 Anaconda 切换到 uv?

通过实战可以看到,uv 的优势非常明显:

  1. 项目即环境,管理更轻松
    • uv 自动在项目文件夹生成 .venv,不再需要手动创建、激活环境,也不用在 PyCharm 里翻半天找解释器。
    • 项目依赖写在 pyproject.toml,一条命令就能同步环境,团队协作更顺畅。
  2. Python 版本自动化管理
    • 可以直接用 uv python install <version> 下载指定版本,.python-version 锚定项目版本,保证项目在正确的 Python 上运行。
    • 这极大避免了安装多个解释器、手动切换版本的繁琐流程。
  3. 依赖安装更快、更智能
    • uv add <pkg> 将包直接装进 .venv,保持环境干净;
    • uv run <script.py> 可临时运行脚本、自动下包,不污染主环境;
    • 临时环境和项目环境互不干扰,灵活性高。
  4. IDE 对接无压力
    • PyCharm 直接选择 .venv 即可,环境一致性有保证,运行、调试更顺畅。
  5. 平滑迁移和共存
    • 原来的 Anaconda 环境可以保留,同时迁移旧项目依赖非常简单(uv add -r requirements.txt)。
    • 不用担心和旧环境冲突,可以逐步切换到 uv 全流程管理。

如果你是一个像我一样,受够了 Anaconda 臃肿和 Pip 缓慢的开发者,uv 就是那个能让你重新爱上 Python 开发的神器。

感谢看完,如果觉得这篇“技术教程”对你有帮助,随手点个赞、在看、转发三连吧

如果想第一时间看到我的技术教程,也可以给我个星标**⭐**。

~~谢谢你看我的文章,我们,下期再见。

相关文章
|
2月前
|
缓存 Rust 开发者
UV详解:替代pip、conda的下一代Python包与环境管理工具
UV是Astral团队推出的Rust编写的高性能Python包管理工具,旨在解决pip与conda在速度、功能割裂、环境不一致和资源冗余等方面的痛点。它集包安装、虚拟环境、依赖锁定、Python版本管理、脚本运行及打包发布于一体,兼容现有生态,安装速度快10–100倍,轻量高效,适合纯Python项目开发与团队协作。(239字)
1293 8
|
3月前
|
Rust 安全 Docker
使用 uv 一键创建并激活 Python 虚拟环境(附完整脚本)
本文介绍基于 `uv` 的自动化脚本 `activate_env.sh`,一键完成安装 uv、创建并激活虚拟环境、安装依赖及环境信息输出,提升 Python 项目初始化效率,适用于个人开发、团队协作与 CI/CD 场景。
|
1月前
|
存储 人工智能 API
OpenClaw多Agent搭建喂饭级教程:阿里云/本地部署+百炼API配置+实战避坑指南
2026年,OpenClaw的爆火并非源于复杂的技术架构——其核心框架难度仅相当于“带初级推荐算法的前后端通信App”,真正的价值在于构建了行业共识:让分散的Agent开发走向标准化,开发者无需再反复沟通架构设计,可聚焦于功能落地与场景创新。更关键的是,它天然支持多Agent协同,完美破解了单Agent的Context窗口瓶颈,让“专事专做”成为AI效率提升的核心路径。
788 7
|
1月前
|
人工智能 安全 程序员
50%的人给了差评:龙虾为何在技术论坛翻车了?
OpenClaw(龙虾)AI工具因“自动赚钱”“代约主播”等夸张宣传走红,但吾爱破解论坛投票显示:50%技术用户未下载且不认可其能力。技术圈冷静源于见惯“神器”泡沫——AI擅写代码(搬砖),却难懂需求、统筹系统。它不是神药,而是待磨的砍柴刀。
297 3
50%的人给了差评:龙虾为何在技术论坛翻车了?
|
1月前
|
人工智能 前端开发 Serverless
10 分钟部署 Qwen3!阿里云 FunctionAI 模板实测,成本低至 ¥0.5/小时
通义千问Qwen3正式开源8款混合推理模型,含2款MoE(如Qwen3-235B-A22B)和6款Dense模型(从0.6B到32B),支持119种语言、思考/非思考双模式,在代码、数学等基准测试中表现优异。依托阿里云函数计算FC与FunctionAI平台,提供vLLM/SGLang/Ollama等多种部署方式,开箱即用。
929 30
|
5月前
|
缓存 Linux 开发者
Windows 下手动下载安装配置 uv
UV 是专为 Windows 打造的轻量命令行包管理器,仅需 uv.exe 和 uvx.exe 两个文件,无需 WSL 或管理员权限。支持一键安装、卸载、多版本切换 Python 等工具,内置依赖解析与缓存管理,搭配国内镜像更高效。绿色无残留,开发者友好,真正实现 Linux 般丝滑体验。
6237 3
|
1月前
|
存储 人工智能 Linux
OpenClaw部署与优化保姆级教程:1分钟阿里云/本地配置百炼+claude-mem+OpenViking Skill,Token 成本降96%
OpenClaw(俗称大龙虾,原Clawdbot、Moltbot)作为一款高性能AI Agent框架,凭借自然语言驱动的任务自动化能力,成为代码开发、流程协作中的重要工具,但在长周期任务执行中,其无状态特性带来的记忆短板与Token高消耗问题,成为企业级落地的核心阻碍。2026年最新技术实践中,通过集成claude-mem与OpenViking两款开源项目,可从底层重构OpenClaw的记忆管理体系,实现Token成本断崖式下降96%,同时结合阿里云与本地多平台部署方案,能让零基础用户快速搭建起高性价比的AI Agent运行环境。本文将深度拆解两款开源项目的核心优化逻辑,同时提供阿里云、Mac
2020 18

热门文章

最新文章