【Python】关于 pip,你知道多少?
【精选优质专栏推荐】
- 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用
- 《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看
- 《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解
- 《网安渗透工具使用教程(全)》 —— 一站式工具手册
- 《CTF 新手入门实战教程》 —— 从题目讲解到实战技巧
- 《前后端项目开发(新手必知必会)》 —— 实战驱动快速上手
每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。
什么是 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 安装以及结合虚拟环境使用),还能让项目开发更加顺畅和灵活。
更多推荐


所有评论(0)