真正高频、必须掌握的pip命令不超过10个,日常开发90%操作由5个命令闭环完成:pip install(含版本、镜像)、pip uninstall、pip list(含--outdated)、pip show、pip freeze > requirements.txt。

直接说结论:没有“大全手册”这种东西值得背,真正高频、必须掌握的 pip 命令不超过 10 个;其余多数是冷门、废弃或仅在特定调试场景下才用。
哪些 pip 命令你每天都会用到
日常开发中,90% 的操作靠这 5 个命令闭环完成:
-
pip install package_name:装包。加==version装指定版本,加-i https://pypi.tuna.tsinghua.edu.cn/simple/换国内源(不配镜像,十次有八次卡在 downloading) -
pip uninstall package_name:卸载。支持空格分隔多个包名,比如pip uninstall requests pytest -
pip list:看当前环境装了啥。加--outdated可筛出可升级的包 -
pip show package_name:查包细节。重点看Location(装在哪)、Requires(依赖谁)、Required-by(谁依赖它) -
pip freeze > requirements.txt:导出依赖快照。注意它默认包含所有包(包括wheel、setuptools),生产环境建议用pip list --local --exclude-editable --format=freeze > requirements.txt过滤掉无关项
pip install 的隐藏参数和常见翻车点
pip install 看似简单,但参数组合不对就容易污染环境或装错位置:
从QuickView趋势笔记生成韩语AI播客包,含双人主持脚本(Callie×Nick)、Gemini多说话人TTS音频、字幕时间轴与渲染修正、缩略图+MP4包装及YouTube标题/描述输出。支持完整版(15~20分钟)和压缩版(5~7分钟)。
- 不加
--user直接装,Windows 上可能报PermissionError,Linux/macOS 可能写入系统 Python 目录(尤其当你没激活虚拟环境时) - 用
pip install -e .安装本地项目时,如果setup.py或pyproject.toml缺少install_requires,依赖不会自动装 -
pip install --force-reinstall package_name会强制重装,但不会清除旧版本残留文件,可能导致ImportError: cannot import name 'xxx' - 从 Git 安装要写全格式:
pip install git+https://github.com/psf/requests.git@v2.31.0#egg=requests,漏掉#egg=会导致安装失败且报错不明确
什么时候该用 pip download 而不是 pip install
当你的目标机器无法联网(如内网服务器、CI 构建机隔离环境),或者你想审计包来源时,pip download 是唯一安全的选择:
-
pip download package_name --no-deps --platform manylinux2014_x86_64 --python-version 39 --abi cp39:下载指定平台/Python 版本的 wheel,避免运行时报Unsupported platform -
pip download -r requirements.txt --no-cache-dir --prefer-binary:批量下载,禁用缓存防止混入本地构建产物 - 下载下来的
.whl文件可手动校验 SHA256,再用pip install --find-links ./downloads/ --no-index package_name离线安装
pip list 和 pip freeze 的本质区别
很多人以为只是输出格式不同,其实行为逻辑完全不同:
-
pip list显示所有已安装包(含通过easy_install或python setup.py install装的),不区分来源 -
pip freeze只显示通过pip安装的包,并严格按package==version格式输出,目的是用于requirements.txt复现环境 - 如果你用
conda管理环境,pip list会列出 conda 装的包,但pip freeze可能完全不显示它们——这是混合环境最常被忽略的兼容性陷阱
真正难的不是记住命令,而是判断「此刻该不该用 pip」:比如 pip search 已在 pip 21.0+ 彻底移除,pip graph 不是内置命令需额外装 pipdeptree,而 pip check 在依赖冲突时只报错不修复。这些边界情况比语法本身更消耗时间。

















