
高效的包管理对于 Python 开发至关重大。pip 和 pipx 是两个最常用的工具。虽然两者都支持安装 Python 包,但它们的设计和用例却大相径庭。本文将探讨这些差异,解释何时使用每种工具,并提供一些实用示例来提升您的工作流程。

什么是 pip?
pip 是 Python 的默认包安装程序。它使开发者能够从 Python 包索引 (PyPI) 或其他存储库(例如 GitHub)安装、升级和管理 Python 包。这种多功能性使 pip 成为安装库和命令行应用程序的通用工具。
主要特点
- 将包安装到当前的 Python 环境中——可以是全局的,也可以是虚拟环境中的。
- 需要手动管理虚拟环境以避免依赖项冲突。
- 常用于项目特定的依赖项。
示例:使用 pip 安装软件包
为了避免依赖项冲突,pip 一般在虚拟环境中使用:
# 先创建一个虚拟环境
python -m venv proj1_env
# 激活虚拟环境
# 在Unix、 MacOS上,用这个命令
source proj1_env/bin/activate
# Windows 上用这个
proj1_envScriptsactivate
# pip安装
pip install requests
在这个例子中,requests库被安装到隔离环境 proj1_env 中,确保它不会干扰其他项目。
pipx 是什么?
pipx 是一款专门用于安装和运行提供命令行界面 (CLI) 的 Python 应用程序的工具。与专注于管理项目依赖项的 pip 不同,pipx 会为每个已安装的应用程序创建独立的环境,确保它们的依赖项之间不会发生冲突。

pipx主要特点
- 自动为每个已安装的应用程序创建虚拟环境。
- 通过将已安装的应用程序添加到系统 PATH 中,全局公开这些应用程序。
- 超级适合在多个项目或系统范围内频繁使用的 Python CLI 工具,确保无缝运行并最大限度地减少维护。
示例:使用 pipx 安装 CLI 工具
先安装pipx:
# 通过 pip 安装 pipx
pip install --user pipx
执行结果:

pip install –user pipx
为pipx配置环境:
# 添加 pipx 到PATH 路径
# Unix 或 MacOS环境
export PATH="$PATH:$HOME/.local/bin"
# Windows环境, 添加 %USERPROFILE%.localin 到 PATH 环境变量
# pipx安装 CLI 工具, 例如 black
pipx install black
# 运行black
black --help
在这里,流行的 Python 代码格式化程序 black 安装在其独立的环境中。这确保了它的依赖项不会干扰其他应用程序的依赖项。
pip 和 pipx 之间的主要区别
用途
pip 是 Python 库和工具的通用安装程序,超级适合安装项目特定的依赖项。而 pipx 专为 Python CLI 应用程序设计,确保每个应用程序相互隔离且可全局访问,且不会发生依赖项冲突。
隔离
pip 依靠手动虚拟环境管理来避免依赖项冲突。相比之下,pipx 会为每个已安装的应用程序自动创建一个单独的虚拟环境,从而简化流程并最大限度地降低风险。
用例
pip 擅长管理特定项目所需的库,例如 Web 框架或数据分析库。pipx 最适合需要全局访问的 CLI 工具,例如 black 或 httpie。
依赖项共享
使用 pip,除非明确隔离,否则依赖项会在环境内共享。而 pipx 确保每个 CLI 应用程序都有自己的依赖项,从而避免任何重叠或冲突。
全局安装
除非通过虚拟环境进行仔细管理,否则使用 pip 进行全局安装可能会导致冲突。相比之下,pipx 保证应用程序可以在全局(global)范围内使用,而不会干扰其他项目或工具。
何时使用 pip
pip 的理想用途:
- 管理单个项目中的库和依赖项。
- 通过将其与虚拟环境结合使用来确保可重复性。
- 安装将在 Python 脚本或应用程序中使用的软件包。
- 例如,如果您正在使用 Django 开发 Web 应用程序,则可以在特定于该项目的虚拟环境中使用 pip 安装 Django 和其他依赖项。
何时使用 pipx
pipx 最适合:
- 安装独立的 Python CLI 工具,例如 black、httpie 或 cookiecutter。
- 运行临时 Python 应用程序而不污染全局 Python 环境。
- 例如,如果您常常使用像 httpie 这样的 CLI 应用程序来测试 API,则通过 pipx 安装它可以确保其依赖项不会与其他工具或项目冲突。
结论
pip 和 pipx 都是 Python 开发人员不可或缺的工具,但它们的用例各不一样。
pip 擅长管理项目特定的依赖项,而 pipx 则更擅长处理独立的 CLI 工具。
了解何时使用每个工具将有助于打造更高效、更易于维护的 Python 工作流程。
通过掌握这些工具, 可以简化开发流程,最大限度地减少冲突,并为您的项目和工具维护干净、有序的环境。



下回试试
选uv