uv初步介绍及使用:
-
- uv初步了解总结表格:
- uv简单使用方法:
-
- uv核心命令清单
-
- [🌰 uv例子:从零写一个小爬虫](#🌰 uv例子:从零写一个小爬虫)
- [案例:如何使用 `uv`运行一个GitHub 项目?](#案例:如何使用
uv运行一个GitHub 项目?)
uv初步了解总结表格:
可以看一下这个网址从pip到uv:一口气梳理现代Python项目管理全流程!
和我摘取的这个网址意思的表格(看完这个视频结合表格以后就懂了):
| 演进阶段 | 使用工具 | 解决了什么问题 | 带来了什么新问题 | 最简单代码案例(含解释) |
|---|---|---|---|---|
| 1. 全局安装阶段 | 全局 pip install |
安装非常直接,先把包装上就能用。 | 项目之间没有边界:多个项目共用同一套包,容易发生版本冲突和环境污染。 | python -m pip install requests 解释: 这条命令会把 requests 直接安装到当前 Python 的全局环境里。优点 是简单,装完马上能用;缺点是这个包会和其他项目共享,一旦别的项目需要不同版本,就容易冲突。 |
| 2. 虚拟环境阶段 | venv |
解决项目间的隔离问题:每个项目有自己独立的 Python 包目录。 | 环境可复制性还不强:你本地能跑,不代表别人知道该装哪些包。 | python -m venv .venv; source .venv/bin/activate; python -m pip install requests; 解释: 第一句先创建一个叫 .venv 的虚拟环境,相当于给当前项目单独准备一套 Python 空间;第二句激活它;第三句把 requests 安装到这个项目自己的环境里,而不是装到全局。这样不同项目就隔离开了。 |
| 3. 依赖清单阶段 | requirements.txt |
开始解决"别人怎么装":把要安装的依赖写进文件,别人可以一次装好。 | 常见做法是 pip freeze > requirements.txt,因为导出了所有底层级联依赖,无法区分哪些是核心包,长期极难维护。 |
python -m pip freeze > requirements.txt; python -m pip install -r requirements.txt; 解释: 第一条命令会把当前环境里已经安装的包及其版本全部导出到 requirements.txt;第二条命令则是根据这个文件重新安装依赖。这样你就能把"我这里能跑的环境"交给别人复现。 |
| 4. 项目声明阶段 | pyproject.toml |
开始以项目为中心:声明"这个项目罪需要什么"。而不是"当前环境碰巧装了什么"。这样不用记下来那么多的依赖包和碰巧安装的其他包。 | 流程仍然分散:环境创建、依赖安装、运行命令,通常还是要靠多个工具和多步操作拼起来。 | pyproject.toml: [project] name = "demo" dependencies = ["requests"] 然后执行: python -m pip install -e . 解释: 这里不再是"先装一堆包,再导出来安装包目录",而是直接在 pyproject.toml 里声明:这个项目叫 demo,它依赖 requests。后面的 pip install -e . 表示把"当前项目"以开发模式安装进环境里。重点变成了:项目自己说清楚它要什么依赖。 |
| 5. 统一项目工作流阶段 | uv(以及 Poetry / PDM) |
把整条链路串起来:把依赖、锁定、同步、运行合成一套工作流。 | 主要是需要适应新命令和新习惯。 | uv init demo; cd demo; uv add requests; uv run python main.py; 解释: uv init demo 先创建一个新项目;cd demo 进入项目目录;uv add requests 会把依赖加入项目配置,并同步环境;uv run python main.py 则直接在项目环境里运行程序。你不再需要自己手动拼很多步骤,而是交给 uv 统一处理。 |
uv简单使用方法:
uv核心命令清单
uv init:初始化一个全新的现代 Python 项目(会自动创建 pyproject.toml、.python-version、README.md、main.py 等基础文件。)。- 如果你在
uv init后面提供了名称(比如uv init my_spider)先创建一个项目文件夹,然后再把这些基础文件放到项目文件夹里。
- 如果你在
uv python install:安装或确认项目所需的 Python 版本;如果项目有.python-version,uv 会按它来处理。uv add <包名>:安装依赖,并自动将其记录到pyproject.toml中。(如果是测试工具,用uv add --dev <包名>)。uv run <命令>:最省心的命令 。自动在当前项目的虚拟环境中执行代码,无需手动source activate激活环境。uv sync:根据项目配置,一键将本地虚拟环境同步到完全一致的状态。
🌰 uv例子:从零写一个小爬虫
假设你要新建一个抓取网页的项目:
bash
# 1. 初始化项目
uv init my_spider
cd my_spider
# 2. 如有需要,安装/确认 Python 版本
# uv python install
# 2. 添加需要的第三方包(uv 会自动处理虚拟环境并写入配置文件)
uv add requests
# 3. 写一行代码测试
# (假设你在 main.py 里写了: import requests; print(requests.get('https://github.com').status_code))
# 4. 运行代码(不用手动激活 .venv,uv 会自动处理)
uv run python main.py
案例:如何使用 uv运行一个GitHub 项目?
1. 克隆代码到本地
bash
git clone https://github.com/someone/awesome-uv-project.git
cd awesome-uv-project
2. 一键配置环境并安装所有依赖
这一步是协作的核心。执行这个命令后,uv 会读取项目中的声明文件(pyproject.toml 和 uv.lock),在本地极其迅速地为你创建一个 .venv 虚拟环境,并把所有依赖严丝合缝地装好。
bash
uv sync
3. 运行项目代码
直接使用 uv run 开头即可,不用管虚拟环境激没激活。
bash
# 如果是运行主脚本
uv run python main.py
# 如果是运行项目中附带的工具(比如 pytest 测试)
uv run pytest
4. 💡uv搞定不同Python 版本的方法
如果你接手的项目明确要求使用 Python 3.12,而你电脑里只有老的 3.10,你不需要再去官网痛苦地下载安装包替换。直接执行:
bash
uv run --python 3.12 main.py
uv 会在后台全自动帮你下载好隔离的 Python 3.12,并用它来运行代码。