惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
SecWiki News
SecWiki News
S
Secure Thoughts
P
Privacy International News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tenable Blog
W
WeLiveSecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
Cyberwarzone
Cyberwarzone
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
L
Lohrmann on Cybersecurity
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
H
Hacker News: Front Page
博客园 - Franky
月光博客
月光博客
D
DataBreaches.Net
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
N
Netflix TechBlog - Medium
G
GRAHAM CLULEY
Engineering at Meta
Engineering at Meta
博客园 - 叶小钗
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog
人人都是产品经理
人人都是产品经理
I
Intezer
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
IT之家
IT之家
V
Vulnerabilities – Threatpost
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
Google Online Security Blog
Google Online Security Blog
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网

lvbibir's Blog

shell | 磁盘空间分析脚本 Linux cat 和 tee 命令写入文件 Claude Code 完整配置指南 windows | mihomo 内核独立部署指南 linux | 磁盘扩容 wsl | 释放长久运行占用的磁盘空间 mysql | 线程上限问题处理 麒麟 7.6 安装谷歌 OTP 认证模块 suse 12sp5 升级 openssh 及 openssl suse 12sp5 部署 mysql 5.7 《谁的青春不迷茫》 docker | centos7 部署 docker vim | 基础配置和使用 windows | rime 输入法 & 雾凇方案 shell | sshpass 批量传输文件及执行命令 wsl | 原生 linux 方式安装 docker nodejs | fnm + pnpm 开发环境配置 wsl | 安装配置 miniconda 虚拟环境 wsl | 自动更新系统代理 wsl | bashrc 环境变量不正确加载的处理方法 wsl | win10 安装 wsl2 troubleshooting | ssh 成功但是 scp 失败 linux | 常用命令总结 docker 部署 piclist shell | 检测网站存活并自动钉钉告警 Zabbix | 监控端口连通性并自动追踪 TCP 路由 windows | 自定义开机快速启动项 windows | miniconda 配置 python 虚拟环境 Zabbix | 监控主机到指定 ip 的流量大小 shell | centos 初始化 loki (二) 部署 loki (一) 简介 prometheus (六) Alertmanager prometheus (五) 记录规则与告警规则 prometheus (四) 黑盒监控 prometheus (三) 服务发现 prometheus (二) 静态配置 prometheus (一) 简介及部署 traefik (四) TraefikService 服务 traefik (三) Middleware 中间件 traefik (二) ingressRoute 路由 traefik (一) 简介、部署和配置 kubernetes | Gateway API 简介及部署 linux | dns 配置文件中 search 和 options ndots 详解 kubernetes | command args 和 dockerfile 中的 ENTRYPOINT CMD kubernetes | statefulset 控制器详解 docker | dockerfile 最佳实践 docker | dockerfile 指令详解 linux | kill 命令详解以及 linux 中的信号 troubleshooting | elasticsearch 安装插件报错 shell | if 条件判断 docker | 下载外网镜像的几种方式 python | 鬼谷子数学问题 steam挂刀教程 linux | history 命令的格式化输出 shell | 将本地镜像批量推送到 harbor windows | hosts 文件修复 kubernetes | configmap & secret kubernetes | RBAC 鉴权和 NetworkPolicy kubernetes | service & ingress kubernetes | 存储 kubernetes | 滚动升级和自动伸缩 kubernetes | 控制器 kubernetes | 日志 kubernetes | 调度 kubernetes | pod kubernetes | 杂记 linux | set 命令详解 ceph | openeuler 部署 ceph-v16 ceph | ceph-v16 离线安装解决方案 pxe 如何应对复杂的服务器硬件环境 python | 批量修改目录下文件名 《微习惯》 ceph | openeuler (aarch64) 部署 ceph-v16 troubleshooting | glibc 误升级后修复 pxe 安装配置大全 《人间失格》 跑步日常 [置顶] Hello, hugo! shell | 检索某 url 中所有文件的内容 shell | 不同执行方式的区别 shell | 开启 debug 模式 vscode | 常见问题 windows & linux 多网卡时设置默认路由以及添加静态路由 mysql (二) 主从复制原理 GTID 并行复制 mysql (一) 部署 mysql | 杂记 cicd | jenkins 部署 mall-swarm 项目 httpd 源码打包编译成 rpm 包 openssl 源码打包编译成 rpm 包 centos7 | 修改网卡名称 ceph | pool pg_num 配置 docker | 脚本方式批量导出/导入镜像 centos 密码尝试次数过多问题处理 centos7 | 升级内核至 5.10 CVE-1999-0526 ceph | centos7 部署 ceph-v12 python | 修改 pip 源 troubleshooting | 安装 cloud-init 后导致 ssh 连接失败 windows | autohotkey 常用脚本
python | 使用 uv 管理你的 python 环境
lvbibir · 2025-12-23 · via lvbibir's Blog

0 前言

本文基于 linux 环境所写, 采用 win10 中的 wsl2, 系统版本是 ubuntu-20.04, 已经很少使用 windows 原生环境开发了, 所以没有 windows 版本的教程, 但殊途同归, 大体过程是一样的

uv 是一个用 Rust 编写的极速 Python 包管理器, 可替代 pip, pip-tools, pipx, poetry, pyenv, virtualenv 等工具

1 安装 uv

官方脚本安装

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

pip 安装

配置 PyPI 镜像源 (加速第三方包下载)

mkdir -p ~/.config/uv
cat > ~/.config/uv/uv.toml << 'EOF'
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple"
default = true
EOF

列出可安装的版本

安装指定版本

uv python install 3.12
uv python install 3.11.4

卸载指定版本

查看已安装版本

uv python list --only-installed

固定项目 Python 版本, 会创建 .python-version 文件

3 第三方模块管理

3.1 虚拟环境

创建虚拟环境

uv venv                        # 默认 .venv
uv venv --python 3.14.2 .venv    # 指定 python 版本

激活/退出虚拟环境

source .venv/bin/activate      # 激活
deactivate                     # 退出

3.2 安装模块

使用 uv add 项目依赖管理, uv add 会同时更新 pyproject.tomluv.lock

uv add requests                         # 安装并添加到依赖
uv add requests==2.28.0                 # 指定版本
uv add --dev pytest                     # 添加开发依赖
uv remove requests                      # 移除依赖

也可以使用 uv pip 的方式, 但是不推荐在项目中使用, 非常不益于管理

使用 uv pip (类似传统 pip), uv pip 不会安装到系统 Python, 查找顺序: 已激活的虚拟环境 -> 当前目录 .venv -> 父目录 .venv -> 报错

uv pip install requests                 # 安装
uv pip install requests==2.28.0         # 安装指定版本
uv pip install --upgrade requests       # 升级
uv pip uninstall requests               # 卸载

4 项目依赖管理

4.1 初始化项目

uv init myproject              # 创建新项目
cd myproject

生成的项目结构

myproject/
├── .python-version            # Python 版本
├── pyproject.toml             # 项目配置和依赖声明
├── README.md
└── src/
    └── myproject/
        └── __init__.py

4.2 核心命令

命令 作用
uv add <pkg> 添加依赖到 pyproject.toml 并安装
uv remove <pkg> 移除依赖
uv lock 根据 pyproject.toml 生成/更新 uv.lock
uv sync 根据 uv.lock 同步安装依赖到虚拟环境

4.3 uv lock 详解

uv lock 解析 pyproject.toml 中声明的依赖, 生成精确的 uv.lock 锁文件

uv lock                        # 生成/更新锁文件
uv lock --upgrade              # 升级所有依赖到最新版本
uv lock --upgrade-package requests  # 仅升级指定包
  • pyproject.toml: 声明依赖范围, 如 requests>=2.28
  • uv.lock: 记录精确版本和哈希, 确保可复现安装

4.4 uv sync 详解

uv sync 根据 uv.lock 将依赖精确安装到虚拟环境

uv sync                        # 同步所有依赖
uv sync --frozen               # 严格按 uv.lock 安装, 不更新锁文件
uv sync --no-dev               # 不安装开发依赖

5 常用工作流

5.1 新项目

uv init myproject && cd myproject
uv add requests pandas
uv run python main.py          # 直接运行, 自动处理虚拟环境

5.2 克隆已有项目

git clone <repo>
cd <repo>
uv sync                        # 根据 uv.lock 安装依赖

uv sync 会自动读取 .python-version, 下载对应 Python 版本 (如未安装), 创建 .venv, 并安装依赖, 无需手动操作

5.3 更新依赖

uv lock --upgrade              # 更新所有依赖版本
uv sync                        # 同步到环境

5.4 已有项目迁移到 uv

从 requirements.txt 迁移

cd existing-project
uv init                        # 初始化, 生成 pyproject.toml
uv add -r requirements.txt     # 从 requirements.txt 导入依赖
rm requirements.txt            # 可选, 删除旧文件

从 pip/virtualenv 迁移

cd existing-project
uv init
uv venv                        # 创建新的虚拟环境
uv add package1 package2       # 手动添加依赖

从 poetry 迁移 (已有 pyproject.toml)

cd existing-project
rm poetry.lock                 # 删除 poetry 锁文件
uv lock                        # 生成 uv.lock
uv sync                        # 安装依赖

以上