【精选优质专栏推荐】


每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。

什么是 pip?

在这里插入图片描述

pip 是 Python 最常用的包管理工具,名称来自 “Pip Installs Packages”。它的主要作用是安装、升级、卸载和管理各种第三方库,让开发者能够快速复用社区已有的工具和框架,而不用从零开始编写代码。

pip 默认连接的仓库是 PyPI (Python Package Index),这是全球最大的 Python 包生态系统,收录了数十万个开源项目,涵盖了数据分析、人工智能、Web 开发、科学计算等各类领域。借助 pip,开发者不仅可以方便地获取和更新这些库,还能结合虚拟环境管理不同项目的依赖,从而避免冲突,提高开发效率。

在这里插入图片描述

pip 与 Python 的关系

在 Python 的生态系统中,Python 解释器是运行代码的核心,而 pip 则是专门用来管理第三方扩展库的工具。

自 Python 3.4 起,pip 就已经内置在官方发行版中,无需额外安装,大大降低了使用门槛。

需要注意的是,我们的系统中可能同时存在多个 Python 版本(例如 Python 3.8、3.10),每个版本都会有自己独立的 pip,这意味着同一台机器上可能存在多个 pip 实例。如果在命令行中直接输入 pip install xxx,有时候会出现安装的包和运行代码的 Python 版本不一致的问题。

为了避免这种情况,推荐的做法是通过解释器调用 pip,例如:

python -m pip install requests

这种方式能够确保 pip 与当前调用的 Python 环境严格对应,从而避免依赖被错误地装到另一个版本里。

此外,当我们在虚拟环境(venv 或 conda)中工作时,pip 会自动与该虚拟环境绑定,确保依赖安装的隔离性和可控性。

pip 的工作原理

当我们在命令行输入 pip install requests 时,pip 首先会去默认的软件包仓库 PyPI(也可以是你指定的镜像源)中查找名为 requests 的包及其可用版本。

找到匹配的版本后,它会优先下载预编译好的 wheel 文件(.whl),因为 wheel 格式安装速度快;如果没有对应的 wheel 文件,则会下载源码压缩包(.tar.gz)并在本地进行编译。

下载完成后,pip 会将包的内容解压并安装到当前 Python 环境的 site-packages 目录,同时写入依赖信息。

如果该库依赖其他包,pip 也会自动递归地去下载和安装它们。

整个过程完成后,我们就可以在 Python 代码中通过 import requests 来直接使用该库了。

例图如下:

在这里插入图片描述

pip 的常见命令

1.列出所有已安装的包

pip list

在这里插入图片描述

2.查看某个包的详细信息

pip show 包名

在这里插入图片描述

3.导出所有依赖

pip freeze > requirements.txt

在这里插入图片描述

4.卸载包

pip uninstall 包名

在这里插入图片描述

5.安装指定版本

pip install 包名==1.2.3

6.升级包

pip install --upgrade 包名

pip 的进阶用法

1.使用镜像源(加速安装)

pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

也可以修改配置文件,永久设置默认源。

2.安装本地包

pip install ./mypackage-0.1.0-py3-none-any.whl

3.安装 GitHub 上的包

pip install git+https://github.com/xxxx/xxxx.git

4.安装可编辑模式(开发调试)
在包目录下运行:

pip install -e .

5.清理缓存

pip cache purge

在这里插入图片描述

pip 与虚拟环境

很多人装包时遇到依赖冲突,就是因为所有包都装在全局环境。

正确做法:配合虚拟环境(venv 或 conda)使用 pip。

示例:

# 第一步:创建虚拟环境
python -m venv venv

# 第二步:激活虚拟环境
venv\Scripts\activate   # Windows
source venv/bin/activate  # Linux/Mac

# 第三步:在虚拟环境中安装需要的库
pip install requests

pip 的替代品

在 Python 生态中,除了官方的 pip 之外,还有许多功能更丰富、更贴合不同开发场景的包管理工具,它们在依赖管理、环境隔离、版本控制等方面各有侧重,能够满足不同的开发需求。

conda
Conda 是 Anaconda 和 Miniconda 附带的跨平台包管理器,最大特点是不仅支持 Python 包,还能管理 C/C++ 等系统级库,尤其适合数据科学、机器学习领域。它通过环境隔离机制,可创建独立的运行环境,避免不同项目间的依赖冲突。此外,Conda 的包仓库包含大量预编译的科学计算库(如 NumPy、TensorFlow),无需用户手动配置编译环境,极大简化了科学计算项目的环境搭建。不过,Conda 的包更新速度可能略慢于 PyPI,且部分包的体积较大。

poetry
Poetry 是一款现代化的 Python 包管理工具,主打 “依赖管理 + 打包发布” 一体化。它通过pyproject.toml文件统一管理项目元数据和依赖,自动处理依赖解析和版本冲突,自动生成精确的poetry.lock文件以确保环境一致性。Poetry 还内置了虚拟环境管理功能,支持一键创建、激活环境,同时提供了便捷的打包和发布到 PyPI 的命令,特别适合 Python 库开发者使用。其清晰的依赖管理逻辑和规范的项目结构,能有效提升团队协作效率。

pipenv
Pipenv 由 Python 官方推荐,旨在整合 pip 和 virtualenv 的功能,解决传统 “pip+virtualenv” workflow 中的依赖混乱问题。它自动创建虚拟环境,通过Pipfile和Pipfile.lock替代传统的requirements.txt,前者区分生产依赖和开发依赖,后者记录精确的依赖版本,确保环境可复现。Pipenv 还内置了依赖安全检查功能,能检测并提示有安全漏洞的包,适合中小型应用开发场景。不过,在处理复杂依赖关系时,其解析速度可能不如 Poetry。

Pip-tools
Pip-tools 是一组轻量级工具(pip-compile和pip-sync),基于 pip 构建,专注于将requirements.in文件编译为精确的requirements.txt。开发者只需在requirements.in中声明依赖的大致版本范围,pip-compile会自动解析并生成包含所有依赖及其精确版本的requirements.txt,pip-sync则可根据该文件同步环境,确保依赖完全一致。它保留了 pip 的使用习惯,适合习惯手动管理依赖且需要精确版本控制的项目。

Hatch
Hatch 是一款功能全面的现代化工具,集环境管理、依赖管理、打包发布于一体。它支持多环境并行管理(如不同 Python 版本的测试环境),依赖管理采用pyproject.toml规范,支持依赖分组和条件依赖,同时提供了简洁的命令行接口用于项目初始化、测试和发布。Hatch 的环境隔离机制高效,且对 monorepo(多项目仓库)有良好支持,适合复杂项目或多包管理场景。

这些工具各有优势,选择时可根据项目类型(应用开发 / 库开发)、团队习惯、依赖复杂度等因素综合考虑。例如,数据科学项目优先考虑 Conda,库开发倾向于 Poetry,而习惯 pip 工作流的团队可能更易接受 Pip-tools。

总结

pip 是 Python 的核心工具,主要用于安装和管理第三方库。它的本质是从 PyPI 下载所需的包并安装到当前的 Python 环境中。熟练掌握 pip 的命令行操作,可以帮助我们高效管理依赖并解决环境冲突问题。同时,借助进阶用法(如切换镜像源、本地安装、从 GitHub 安装以及结合虚拟环境使用),还能让项目开发更加顺畅和灵活。

更多推荐