在jupyter notebook中直接运行conda list会报错,因它是终端命令,需用!conda list(前提conda已初始化且在path中);更可靠方式是用!pip list或pkg_resources查看当前kernel实际加载的库。

在 Jupyter Notebook 里直接运行 conda list 会报错?
因为 conda list 是终端命令,不能直接在 Notebook 单元格里执行(除非用 !conda list,但前提是 conda 在当前环境 PATH 中且已初始化)。更可靠、跨平台的方式是用 Python 原生方法查已安装包。
用 pip list 或 pkg_resources 查当前环境所有库
推荐在 Notebook 单元格中运行以下任一代码,它反映的是当前 Kernel 实际加载的包列表(即你看到的 sys.executable 对应环境):
-
!pip list—— 最简单,但输出带版本号和格式化空格,适合快速浏览 -
import pkg_resources; [d.project_name for d in pkg_resources.working_set]—— 返回纯列表,方便后续筛选或写入文件 -
import importlib.util; import sys; list(sys.modules.keys())—— 注意:这只显示**已导入**的模块,不是全部已安装库,慎用
如果想导出为 requirements.txt 格式,用:!pip freeze > requirements.txt,生成的文件会包含精确版本号,适合复现环境。
为什么 conda list 在 Notebook 里经常失效
常见原因有三个:
- 当前 Kernel 不是 conda 环境启动的(比如用
venv或系统 Python 启动),conda命令根本不可用 - conda 初始化未生效:Windows 上 Anaconda Prompt 默认初始化,但普通 CMD/PowerShell 或 VS Code 终端未必加载了 conda 的 shell hook
- 即使能运行
!conda list,它查的是「当前 shell 激活的环境」,不一定等于 Notebook Kernel 所在环境 —— 这俩可能不一致
所以别依赖 !conda list 判断 Notebook 正在用哪个环境的包;优先以 pip list 或 sys.executable 为准。
确认当前 Kernel 环境后再查库,避免误判
先跑这三行,确保你知道自己到底在哪个环境里:
import sys
print("Python 可执行路径:", sys.executable)
print("Python 版本:", sys.version.split()[0])
如果 sys.executable 路径含 envs/xxx,说明是 conda 环境;含 venv 或 virtualenv 目录,则是 Python 内置虚拟环境;直接指向系统 /usr/bin/python 或 C:\Python39\python.exe,那就是全局环境。
查库这件事,本质是查「这个可执行文件能看到哪些包」——不是查你电脑上装过什么,而是查它实际加载了什么。路径不对,查到的就不是 Notebook 正在用的那套。











