uv + pipx 打造干净的 Python 环境:安装、虚拟环境与全局工具

为什么用 uv + pipx(而不是一股脑 pip install)

很多人遇到的痛点其实都一样:项目 A 需要某个版本的依赖,项目 B 又需要另一套;再加上全局安装的命令行工具(例如 ruff、black、httpie)越装越多,最后系统 Python 变得不可控。一个更稳的思路是把「项目依赖」和「全局工具」分开管理:

1)项目依赖:交给 uv 来创建虚拟环境、安装依赖、生成锁定文件;

2)全局工具:交给 pipx,把每个 CLI 工具装在独立隔离环境里,但命令又能全局调用。

工具地址 / 参考链接(请至少打开一次确认版本)

uv:https://github.com/astral-sh/uv

pipx:https://pipx.pypa.io/

第一步:安装 uv(Windows/macOS/Linux)

uv 的安装方式很多,下面给出几种常见选择,你只需要选一种即可:

macOS(Homebrew):brew install uv

Windows(WinGet):winget install --id Astral.uv

通用安装脚本(官方推荐之一):curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成后先检查版本与路径:

uv --version

第二步:为项目创建虚拟环境并安装依赖

在你的项目目录里,推荐用 uv 直接初始化并创建虚拟环境:

uv venv

随后用 uv 安装依赖(示例以 requests 为例):

uv pip install requests

如果你希望把依赖写入项目配置(例如 pyproject.toml),可以配合你习惯的依赖声明方式;而 uv 负责执行安装与加速下载。对于团队协作,建议生成锁定文件,保证每个人装到的版本一致(命令示例会因项目结构不同而略有差异)。

第三步:把“全局 CLI 工具”交给 pipx

很多工具其实不应该装进某个项目里,而是作为“全局命令”随时可用,例如格式化、静态检查、HTTP 调试等。pipx 的价值就在这里:每个工具独立隔离,但命令统一可用。

安装 pipx(示例):

python -m pip install --user pipx

python -m pipx ensurepath

用 pipx 安装常用工具(举例 ruff、black):

pipx install ruff

pipx install black

如果你更希望 pipx 也走 uv 的速度,可以把 uv 作为 pip 的替代后端(具体以你当前环境可用方式为准)。核心原则不变:项目依赖回到项目里,全局工具保持隔离。

一个简单但高效的日常工作流(推荐)

1)新项目:先 uv venv,再安装依赖;

2)写代码:用 pipx 安装并运行质量工具(例如 ruff / black),不把它们塞进每个项目;

3)协作交付:把依赖声明与锁定文件提交到仓库,让团队环境更可复现。

常见问题排查

Q1:命令找不到(Windows/macOS)

优先检查 PATH。pipx 执行 ensurepath 后通常需要重新打开终端;macOS 上如果用 brew 安装 uv,也建议重开终端确认 uv --version 能正常输出。

Q2:系统 Python 被污染怎么办?

把“全局安装”尽量迁移到 pipx;项目依赖全部放到虚拟环境中。不要在系统 Python 上随意 pip install 一堆库。

Q3:如何保持多个项目互不影响?

每个项目一个独立虚拟环境是底线。uv 的 uv venv + 项目内依赖安装,可以让不同项目之间互不干扰。

结语

uv 负责“项目依赖的快与稳”,pipx 负责“全局工具的隔离与可用”。把两者组合起来,你会发现 Python 环境从此更可控,装机和换项目也更轻松。

相关话题

用户评论 (0)

登录后参与讨论

立即登录 注册账号

暂无评论,快来抢沙发吧~

操作成功