pipx

pipx

把 Python 命令行应用装进各自独立的虚拟环境,并暴露命令到 PATH

核心功能

解决「用 pip 全局装命令行工具导致依赖打架、卸载残留」的问题:每个应用一个独立虚拟环境,命令照样在 PATH 里可直接调用,卸载后不留痕迹。适合经常安装 black、ruff、poetry 这类 Python CLI 工具的开发者。

功能亮点

一应用一环境

每个 CLI 应用有独立虚拟环境,依赖互不冲突,卸载后磁盘上不留残留

免安装直接跑

pipx run 把包下载到临时环境里执行,用完即走,环境最多缓存 14 天

不需要 sudo

以普通用户权限工作,避免 sudo pip install 污染系统 Python

来源不限于 PyPI

可从本地目录、wheel、远程 tarball 或 git 仓库分支/提交哈希直接安装

环境自检与修复

pipx health 检查各环境解释器是否可用,pipx repair 重装损坏的环境

适用场景

• 全局安装 black、ruff、poetry 等 Python 命令行工具而不让依赖互相冲突
• 用 pipx run 临时试用某个命令行工具,不在机器上留下长期安装
• 从 git 分支或 PR 安装某个工具的开发版做验证,测完直接卸载干净

安装配置

bash
macOS:
brew install pipx
pipx ensurepath

Linux(Ubuntu 23.04 及以上):
sudo apt update
sudo apt install pipx
pipx ensurepath

Linux(Fedora):
sudo dnf install pipx
pipx ensurepath

Linux(其他发行版,用 pip):
python3 -m pip install --user pipx
python3 -m pipx ensurepath

Windows(Scoop):
scoop install pipx
pipx ensurepath

Windows(pip,需 pip 19.0+):
py -m pip install --user pipx
.\pipx.exe ensurepath

验证安装:
pipx --version

说明:安装 pipx 需要 Python 3.10 或更新版本;执行 pipx ensurepath 后需重开终端使 PATH 生效。

使用方法

bash
pipx install black          # 把应用装进隔离环境并暴露命令
pipx run black --version    # 在临时环境中直接运行,不做安装
pipx list                   # 列出已安装的应用及其环境
pipx upgrade black          # 升级单个应用
pipx upgrade-all            # 升级全部受管应用
pipx uninstall black        # 卸载应用及其环境
pipx uninstall-all          # 卸载所有受管应用
pipx inject black ipython   # 向已有环境注入额外的包
pipx pin black              # 固定版本,阻止被升级
pipx reinstall-all          # 升级 Python 后重装全部应用
pipx health                 # 检查各环境解释器是否可用
pipx ensurepath             # 把应用目录写入 PATH
pipx install git+https://github.com/psf/black.git   # 从 git 仓库安装

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标pipx
价格免费
开源
上手难度入门

相关工具

同类工具

优点

  • 每个应用独立虚拟环境,工具之间依赖零冲突,卸载不留残留文件
  • pipx run 可在临时环境跑最新版应用,省去为一次性使用而安装的麻烦
  • 以普通用户权限运行,不需要 sudo pip install 去动系统 Python
  • 接受 pip 支持的任意来源,包括本地目录、wheel、远程 zip 和 git URL

缺点

  • 只适合安装声明了 console script 入口点的应用,不能用来管理项目的库依赖
  • 安装 pipx 自身要求 Python 3.10 及以上
  • 在采用 PEP 668 的发行版(Ubuntu 23.04+、Debian 12+、Fedora 38+)上 pip install --user 会报 externally-managed-environment,需改用发行版包或独立虚拟环境