conda list 是查看当前 conda 环境所有包版本最直接的方式,支持按包名查询、--no-builds 精简输出;pip list 显示解释器 site-packages 中所有可导入包;代码中推荐 import pkg; print(pkg.__version__) 或 importlib.metadata.version()。

conda list 查当前环境所有包版本
这是最直接、最常用的方式,conda list 会列出当前激活环境中所有通过 conda 安装的包及其版本号、构建信息和渠道来源。它不依赖外部 Python 解释器状态,结果稳定可靠。
- 只查某个包(比如
numpy):运行conda list numpy - 想看更紧凑的输出(去掉构建号和渠道):加
--no-builds参数,如conda list --no-builds numpy - 注意:如果包是用
pip install装的,conda list仍会显示,但 channel 列标为pypi;不过某些极简安装(如pip install --user)可能不会出现在该列表中
pip list 查 pip 安装的包(含 conda 环境内)
pip list 读取的是当前 Python 解释器的 site-packages,因此它能覆盖 conda 环境里所有已安装的 Python 包,无论来源是 conda 还是 pip —— 只要它们被 importable 就行。
- 查单个包:
pip show <code>requests(输出含版本、位置、依赖等详细信息) - 只显示包名+版本(适合脚本解析):
pip list --format=freeze或pip freeze - 坑点:如果你没激活 conda 环境就运行
pip list,看到的是 base 环境或系统 Python 的包,不是目标环境的
在 Python 代码里动态获取版本
适合写工具脚本或调试时确认运行时实际加载的版本,尤其当存在多版本共存、路径污染或 import fallback 的情况。
- 标准方式(推荐):
import torch; print(torch.__version__) - 通用方式(避免 ImportError):
import importlib.metadata; print(importlib.metadata.version("scipy"))(Python ≥3.8) - 兼容旧版(Python import pkg_resources; print(pkg_resources.get_distribution("pandas").version)
- 注意:
__version__不是所有包都提供,有些用VERSION、version或根本没暴露;而importlib.metadata方式最健壮,但要求包有合法的dist-info目录
为什么 conda list anaconda 不等于 Anaconda 发行版版本?
很多人误以为 conda list anaconda 显示的是整个 Anaconda Distribution 的版本,其实它只是列出名为 anaconda 的那个元包 —— 这个包确实代表发行版,但必须加 $ 锚定精确匹配,否则可能混入其他含 “anaconda” 字样的包(如 anaconda-client)。
- 正确命令:
conda list "^anaconda$"或conda list anaconda$ - 更稳妥的提取方式:
conda list anaconda | grep "^anaconda " | awk '{print $2}' - 关键区别:这个版本号(如
24.3.0)才是官网发布的 Anaconda Distribution 版本,和conda --version(包管理器版本)、python --version(解释器版本)完全无关
conda list 和 pip list 的输出范围不重叠也不完全包含 —— 没有单一命令能 100% 覆盖所有安装路径。动手前先确认你问的是“哪个环境”“哪种安装方式”“是否已激活”。

















