在环境里敲 conda remove numpy,提示 PackagesNotFoundError。可 pip list 里明明有 numpy。原因很简单:这个包是 pip 装进来的,conda 的清单里根本没有它。这个报错不是环境坏了,是没搞清工具的边界,先分清来源。
先看清楚包是谁装的
conda list 输出的最右边一列是渠道,带 pypi 标记的就是 pip 装的。这类包要用 pip uninstall 删,conda remove 管不到。混着装最容易出现版本打架,删之前先确认来源,别在两个工具之间来回猜。拿不准就先 conda list 包名,再 pip show 包名,两个都查一遍。
删包、删环境是两条命令
删单个包:conda remove 包名,指定环境加 -n 环境名,比如 -n py39 requests。也能按版本删,写成 numpy=1.24 这种形式。它会连带删掉依赖它的包,所以先加 --dry-run 看一眼计划,确认没误伤再按 y。整个环境不要了,在后面加 --all,环境目录会一起清掉;也可以直接用 conda env remove -n 环境名。环境目录默认在 anaconda3/envs 下面,删完去那里看一眼有没有残留。
base 环境别乱动
base 里装着 conda 自己和一堆基础依赖,删错一个包可能连 conda 命令都起不来。真要精简,先 conda create 一个新环境,把需要的包装进去,旧环境留着不动。磁盘紧张就 conda clean -a 清缓存,通常能腾出几个 GB。删之前先 conda list --explicit 导出清单,环境坏了还能照着重装。
删不掉时的排查顺序
提示权限不足,检查环境目录是不是被别的程序占用,Windows 上关掉正在用的 Jupyter 和编辑器。提示依赖冲突,加 --force 能强删,但后患不少,不如重建环境。环境坏了修起来比新建慢,动手之前想清楚这一点。
日常习惯:装包认准一个来源,conda 装不上再考虑 pip,删的时候就不会找不到北。