第1章:pip基础——安装、升级与常用命令

做Python开发,离不开pip。我见过太多新手在环境配置上浪费大把时间,说白了就是没把pip玩明白。这一章,咱们就把pip的安装、升级和日常命令彻底搞清楚。

1.1 pip的安装与升级

先说说pip怎么装。Python 3.4以上版本,pip已经内置了。你可以在终端输入:

python -m pip --version

如果看到版本号,说明pip已经就绪。没装的话也别慌,我推荐用官方脚本:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

嗯,这里要注意:Windows用户记得把Python和Scripts目录加到环境变量里。我曾经帮一个同事排查问题,折腾了半天,结果发现就是环境变量没配好。

pip本身也需要升级。你想想看,老版本pip在解析依赖时可能会有bug。升级命令很简单:

python -m pip install --upgrade pip

我个人习惯每两周执行一次这个命令。尤其是在开始新项目前,确保pip是最新版,能省去很多麻烦。

小技巧: 如果你在Linux/Mac上遇到权限问题,可以加 --user 参数,或者用虚拟环境。我强烈推荐后者。

1.2 pip install——安装包的核心命令

安装包是pip最常用的功能。基本用法:

pip install requests

这会安装最新版的requests库。但实际项目中,我们往往需要指定版本:

pip install requests==2.28.1
pip install 'requests>=2.20, <3.0'

为什么要指定版本?我在项目中遇到过两次惨痛教训。第一次是团队里有人装了新版库,结果接口变了,整个模块跑不起来。第二次是依赖冲突,A包要1.x,B包要2.x,折腾了一下午才理清。

所以我的建议是:永远在项目里锁定版本。用 requirements.txt 来管理:

pip install -r requirements.txt

这个文件长这样:

flask==2.2.3
requests==2.28.1
numpy==1.24.2
核心要点: 安装包时,优先使用 == 锁定精确版本。别偷懒用 >=,除非你很清楚自己在做什么。

1.3 pip uninstall——卸载不需要的包

卸载命令很简单:

pip uninstall requests

系统会提示确认。如果想跳过确认,加 -y 参数:

pip uninstall requests -y

不过我得提醒你:卸载前先确认这个包没有被其他项目依赖。我曾经手快卸载了某个公共库,结果CI构建直接挂了。嗯,那天的教训挺深刻的。

1.4 pip list——查看已安装的包

想知道当前环境装了哪些包?用 pip list:

pip list

输出类似这样:

Package    Version
---------- -------
pip        23.0.1
requests   2.28.1
setuptools 67.6.0

如果想看哪些包有更新:

pip list --outdated

这个命令我经常用。尤其是在接手老旧项目时,先看看哪些依赖已经过时,心里有个底。

1.5 pip show——查看包的详细信息

遇到不熟悉的包,用 pip show 查看详情:

pip show requests

输出:

Name: requests
Version: 2.28.1
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
License: Apache 2.0
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: flask

这里有两个关键信息:Requires 和 Required-by。前者告诉你这个包依赖什么,后者告诉你哪些包依赖它。这在排查依赖冲突时特别有用。

注意: 如果 Required-by 列表不为空,卸载这个包时要格外小心。最好先用 pip show 确认一下。

1.6 pip freeze——导出当前环境依赖

这个命令我几乎每天都会用。它把当前环境的所有包和版本号输出成 requirements.txt 格式:

pip freeze > requirements.txt

生成的文件内容:

certifi==2022.12.7
charset-normalizer==3.0.1
idna==3.4
requests==2.28.1
urllib3==1.26.14

你可能会问:这和 pip list 有什么区别?说白了,freeze 的输出格式就是 requirements.txt 的标准格式,可以直接拿来用。而 list 的输出更适合人看。

我个人习惯在项目提交前执行一次 pip freeze,确保依赖版本被正确记录。这样团队成员拉下代码后,一条命令就能复现环境。

知识体系总览

下面这张图帮你理清pip核心命令的关系:

pip 包管理 install uninstall list show freeze --outdated 安装/卸载依赖 指定版本、requirements.txt 环境快照与迁移 freeze + requirements.txt 依赖信息查询 show、list、--outdated pip 核心命令与使用场景

这张图把pip的五大命令和三个核心场景串起来了。你从上往下看:先掌握 install 和 uninstall 这两个基础操作,再学会用 list、show、freeze 来管理和查询依赖。最后落到实际场景:安装卸载、环境迁移、信息查询。

我的经验: 刚开始用pip时,别贪多。先把 install、freeze、list 这三个命令练熟。它们能覆盖你80%的日常需求。剩下的命令,遇到具体问题时再查也不迟。

好了,这一章的内容就到这里。记住:pip是Python生态的基石,花点时间把它搞透,绝对值得。

可可精品资料库