Windows 下 Conda 无法使用 init 和 activate:一份完整的排查与解决实录
有段时间我在新配的 Windows 机器上装 Conda,装完后打开 PowerShell,照着官方文档敲 conda init,然后又敲 conda activate base,结果迎面就是一句熟悉的 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'。更离谱的是,明明 conda init 已经执行成功,提示语也写着“completed”,但新开终端后依然不认账。这个问题在 Windows 上的出现频率比很多人想象的高得多,而且成因往往不止一个。这篇文章我会把 conda 在 Windows 下 init 与 activate 失效的常见场景、底层逻辑、排查顺序和应急方案一次讲清楚,按步骤走基本能解决绝大多数情况。
1. 先定位:你的 conda 问题属于哪一种报错
排查任何环境问题之前,第一步不是去看报错本身,而是归拢问题的类型。我一直觉得,搞清“你正处于哪种失败状态”,比直接复制网上的“万能修复命令”更有用。因为 Windows 下 conda init/activate 的失效场景,表面上都长得差不多,但背后的原因完全不是一回事。
1.1 情况一:conda 这五个字母压根输不进去
如果你在 cmd 或 PowerShell 里输入 conda --version,系统直接回你一句“conda 不是内部或外部命令,也不是可运行的程序”,或者 “The term 'conda' is not recognized as the name of a cmdlet”,那说明你的问题根本不在 init 和 activate,而在 conda 的可执行文件没有被系统的 PATH 环境变量找到。
这种情况最常见于手动安装了 Miniconda 或 Anaconda 但安装的时候没勾选“Add to PATH”的安装者,或者你自己从压缩包里解压了一份 conda、根本没有跑安装程序的人。还有一种容易被忽略的情况:你装了多个 Python 发行版,某个版本的安装器把 PATH 里的 conda 路径覆盖了,或者注册了另一个 Python 环境后,把 conda 所在的路径挤出了 PATH 的搜索列表,但终端缓存里还残存着旧路径,导致重启终端后出现一瞬间的“之前能用,现在怎么不行了”。
1.2 情况二:conda 能用,但 conda init 直接报错
如果你输入 conda init,却提示 CondaError: Run 'conda init' before 'conda activate',或者干脆提示“选项太多 / 参数无效”,那说明你用的 conda 版本比较老,或者你的 conda 是通过 pip 安装的,而不是官方安装器生成的独立发行版。
这里有个关键区别:通过 Anaconda/Miniconda 安装的 conda,自带一套完整的 shell 初始化脚本生成机制;而通过 pip install conda 装进某个 Python 环境里的 conda,本身缺少和系统 shell 对接的初始化逻辑,两者虽然命令行长得像,但对 init 和 activate 的支持是完全不同的。很多人混淆了这两种安装来源,把 pip 版 conda 当成官方发行版来用,自然会在 init 阶段吃瘪。
1.3 情况三:conda init 显示成功,但 activate 依旧不生效
这是最迷幻的一种。你运行 conda init powershell 或 conda init cmd.exe,屏幕上闪过了 “completed” 字样,日志也显示修改了几个文件,但关掉终端重新打开,输入 conda activate 照样叫你不 init。遇到这种情况才能定性为“init 无效”,而且大概率不是 conda 坏了,而是你的终端进程、初始化脚本或者环境变量配置没配合好。
这种“假成功”是最难排查的,因为它不给你任何明显的报错,只是让你陷入“我明明执行了怎么没用”的循环。我自己的经验是,遇到这种情况先别急着反复执行 init 命令,而是停下来搞清楚 conda init 到底往系统里写了什么东西。搞清楚这一点,后面的排查才能做到有的放矢。
1.4 一个小自测:判断你自己的问题属于哪一类
| 现象 | 直接原因方向 | 处理思路 |
|---|---|---|
conda 命令找不到 |
PATH 未配置 / 被覆盖 | 配置环境变量,重开终端 |
conda init 报语法错误或“先运行 conda init” |
conda 版本太老 / pip 安装非完整发行版 | 升级或重装为 Anaconda/Miniconda |
| init 成功但 activate 不生效 | shell 初始化配置未加载 / 执行策略拦截 / 终端类型不匹配 | 检查 profile、ExecutionPolicy、手动加载脚本 |
activate 报 CommandNotFoundError |
初始化脚本没起作用 | 按情况二/三处理 |
把问题归到这四类里,后面每个解决方案才会真正对号入座。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 理解 conda init 在 Windows 上的真实机制:它在改什么、写什么
遇到“明明 init 了却不生效”,很多人的第一反应是盲目重装 Conda。但你重装一百次,问题可能还在。因为这个问题的本质不在 conda 的二进制文件,而在于 Windows 的 shell 启动机制没有按照 conda 期望的方式加载初始化脚本。
2.1 init 的实质:往 shell 的启动配置里塞一段代码
在 Linux 或 macOS 上,conda init 做的事情很直观:往你当前用户目录下的 .bashrc、.zshrc 等文件里追加一段 shell 函数定义和路径搜索代码。这样每次打开终端,shell 都会自动加载这些函数,conda activate 就能执行了。
Windows 上没有统一的 .bashrc 概念,命令行环境分裂成好几套体系:传统的 cmd.exe、微软主推的 PowerShell、还有 Windows 自带的 WSL 环境(在 WSL 里用的是 Linux 的思路)。Conda 为了支持不同的终端,init 时要分别处理不同的目标文件。
所以当你运行 conda init cmd.exe 时,它往 CMD 的注册表项里的 AutoRun 或相应的启动配置里写入初始化命令;当你运行 conda init powershell 时,它往 PowerShell 的 profile.ps1 文件里写入脚本。如果你只 init 了 powershell,下次却打开 CMD 使用,那 CMD 里当然不会有 conda 的初始化代码,activate 就不生效——这听起来像个低级错误,但实际遇到的人真的很多,尤其是习惯一段时间用 CMD、一段时间用 PowerShell 的人。
2.2 PowerShell 的 profile.ps1 和执行策略:一对经典的坑
PowerShell 的初始化文件叫做 profile,路径一般是:
code复制C:\Users\<用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
在 PowerShell 7 里,路径变成了:
code复制C:\Users\<用户名>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
conda init 会往这个文件里追加一段类似这样的代码:
powershell复制# region conda initialize
# !! Contents within this block are managed by 'conda init' !!
(& "C:\Users\<用户名>\Miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
# end region
问题来了:PowerShell 有一条默认的执行策略叫做 Restricted,在这个策略下,.ps1 脚本文件是不允许被执行的。Invoke-Expression 虽然执行的是字符串,但整个 profile 文件的加载本身也算是一个脚本执行动作,如果执行策略限制得太死,PowerShell 会在启动时直接跳过 profile 文件,或者在某些情况下报红色错误,但更多时候是悄无声息地不加载,让你完全察觉不到。
这就是很多人“明明 init 成功了但 activate 没用”的真相:文件写进去了,但 PowerShell 根本没执行这个文件。
2.3 CMD 的 init 方式:注册表 AutoRun 的隐藏逻辑
如果你用的是 cmd,conda init 会通过注册表里的 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 来设置一段命令,让 cmd 每次启动时先执行 conda 的初始化逻辑。
这个方法本来没什么问题,但它有一个比较坑的地方:注册表 AutoRun 是全局生效的,只要你打开 cmd,就一定会执行。如果你同时装了多个 conda 或者手动修改过 AutoRun,新旧配置叠加,cmd 可能在启动时执行了两遍初始化,或者因为路径问题直接弹出莫名其妙的错误。
还有一个特殊情况:某些公司电脑的域策略会强制覆盖注册表里 AutoRun 的设置,你本地 init 写入的配置,下一次开机登录时可能被域策略重置掉了。虽然这不是人人都会遇到,但在排查“为什么每次 init 完重启终端又失效”的时候,值得记一笔。
2.4 conda 4.4 版本前后的行为差异
还有个容易被忽略的版本背景。Conda 在 4.4 版本之前,activate 的实现方式跟现在完全不同——那时候直接用 activate base 就能激活,是通过把 conda 的路径直接加进 PATH 来完成切换的。4.4 之后,conda 引入了“shell hook + conda function”这套新的机制,命令也改成 conda activate。如果你看网上一些比较老的教程,跟着它配置的是旧版的 activate 方式,而新版的 conda 已经不再支持这种用法,自然会报错。
我现在做排查看版本的第一个动作,就是先跑 conda --version。如果你的 conda 版本停留在 4.x 很早期的版本,或者通过某些渠道装的“绿色版”,init/activate 的行为很可能就和官方文档描述不一致——这也能解释为什么你照着教程敲命令,却出现教程里完全没提到过的错误。
3. 按下述顺序排查:每一步都有明确的验证方式
当你已经确定了基本的报错类型,接下来就该系统地过一遍排查流程。我建议你按顺序来,不要跳步。很多问题的根源其实很浅,但因为跳过了基础检查,最后绕了一大圈。
3.1 第一步:确认 conda 本体的安装信息和可执行文件
先做一次基础体检,在 cmd 或 PowerShell 里执行:
bash复制conda --version
where.exe conda
第一行告诉你 conda 版本。第二行告诉你系统中 conda 可执行文件的实际路径。如果你执行 where.exe conda 列出了多个路径,说明你的系统里可能装了多份 conda。命令行中实际调用的是排在最前面的那个。这种情况下,你 init 的可能是 A 路径下的 conda,但激活时实际运行的却可能是 B 路径下的 conda,两者互相干扰,init 永远“看起来成功,效果却没用”。
按照我的经验,最干净的环境是只保留一份 conda。如果你确需多个环境,至少在 shell 里要能一眼看出当前调用的是哪一个,并且 init 和 activate 始终使用同一个可执行文件。
3.2 第二步:检查 PATH 环境变量,注意顺序和系统变量
如果 where.exe conda 只找到一条路径,但依然无法激活,那下一步检查 PATH 变量的配置。在 PowerShell 里可以这样看:
powershell复制$env:Path -split ';' | Select-String -Pattern 'conda|Anaconda|Miniconda'
重点看两件事:
- conda 相关路径是否出现在 PATH 里
- 这些路径是用户变量里的还是系统变量里的
如果你发现 conda 路径根本没出现在 PATH 中,那问题基本就是“找不到入口”。你手动把以下路径加进去(以 Miniconda 为例,路径按你的实际安装位置修改):
text复制C:\Users\<用户名>\Miniconda3
C:\Users\<用户名>\Miniconda3\Scripts
C:\Users\<用户名>\Miniconda3\Library\bin
加完之后一定要关闭所有终端重新开一个,因为终端的环境变量是在启动那一刻从系统读的,不重开不会刷新。这一步里很多人会忽略重开终端,导致白白折腾半天。
用户变量和系统变量的区别也要留意:用户变量只对当前用户生效,系统变量对所有用户生效,但在某些被组织统一管理的机器上,系统变量会被强制覆盖,只改用户变量更安全。
3.3 第三步:修复 PowerShell 执行策略
如果你主要用 PowerShell,执行策略这一项必须检查。在 PowerShell 里运行:
powershell复制Get-ExecutionPolicy -List
输出会列出多个作用域(MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine)。其中和你的登录用户直接相关的是 CurrentUser,默认值通常是 Undefined,最终生效的执行策略取的是最严格的一个。
如果你想让 conda 的 profile 脚本能够顺利执行,最简单的方式是把当前用户的执行策略设为 RemoteSigned(允许本地脚本,远程下载的脚本需要带签名):
powershell复制Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
有人会问,直接把策略设成 Unrestricted 行不行?当然能行,但作为安全习惯,我不建议在开发机上放开到无限制。RemoteSigned 已经足够满足 conda 的需求。
执行完这一步后,记得重新打开 PowerShell,然后试着加载 profile:
powershell复制. $PROFILE
如果不报错,再试试 conda activate base。如果这一步能激活,说明问题就是执行策略拦住了 profile 脚本。如果你不希望改动本机策略,每次打开 PowerShell 想要用 conda 也可以手动执行:
powershell复制(& "C:\Users\<用户名>\Miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
这行代码其实就是 conda init 在 profile 里写入内容的原样,手敲一遍等于手动激活了 conda 的函数定义。但这个方案每次开新终端都要执行一遍,治标不治本,只适合应急。
3.4 第四步:重新执行 init 并选择正确的 shell 目标
在确认 PATH 和执行策略都没问题之后,重新对你要用的终端执行初始化。如果你用的是 PowerShell 5.1(Windows 自带的版本),执行:
bash复制conda init powershell
如果你装的是 PowerShell 7,仍然执行:
bash复制conda init powershell
conda 会自动探测 profile 路径,写入对应版本的文件。如果你用的是 CMD,执行:
bash复制conda init cmd.exe
如果你不确定自己会用到哪些终端,也可以一次性全部初始化:
bash复制conda init powershell cmd.exe
这个命令会把 PowerShell 和 CMD 的配置都写好。执行完以后,把终端全部关闭再重开。
3.5 第五步:验证配置写入的具体文件内容
如果重开终端依然无效,需要检查 conda 写入的文件是否真实存在、内容是否完整。
在 PowerShell 里,查看 profile 路径:
powershell复制echo $PROFILE
然后用记事本打开这个文件,确认里面包含 conda initialize 那段代码。如果文件根本不存在,说明 conda init powershell 没有写进去,很可能是你手动改过 profile 路径注册表,或者当前用户目录权限有问题。
在 CMD 里,检查注册表:
reg复制reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun
如果值不存在,说明 init cmd.exe 没有生效;如果值存在且指向一个不存在的路径,cmd 启动时可能会报错,这里要仔细阅读返回值。
3.6 第六步:检查终端启动时的隐藏报错
PowerShell 在加载 profile 时如果遇到错误,默认不一定立即显示,但可以通过手动强制加载看到错误信息。执行:
powershell复制$Error.Clear()
. $PROFILE
$Error
如果看到类似 “因为在此系统上禁止运行脚本”或者“路径不存在”的错误,那就能直接定位问题。CMD 下的 AutoRun 如果出错,情况更直接——打开 cmd 会弹出错误框或者红色提示,反而更容易发现。
4. 不依赖 init 的应急激活方案:三种绕过方式与适用场景
有些时候,你并不想把时间花在修复 shell 配置上,只想立刻让 conda 的虚拟环境用起来。下面三种方式不需要执行 init,也不依赖 shell 初始化脚本,可以快速救急。
4.1 方案一:使用 Anaconda Prompt / Miniforge Prompt
Anaconda 或 Miniforge 安装完成之后,开始菜单里会附带一个“Anaconda Prompt”或“Miniforge Prompt”快捷方式。这个快捷方式自带环境变量和初始化逻辑,打开之后 conda 直接可用,不需要你手动 init。
如果你只是偶尔用一下 conda,不想折腾 shell 配置,这个方案最省事。但它的缺点是:一旦你需要在 VSCode 集成终端、JetBrains 系列的终端或者自定义终端里使用 conda,这个快捷方式的便利性就发挥不出来了。
4.2 方案二:在 cmd 里手动调用 activate.bat
在 cmd 里,即使没有 init,也可以直接用批处理文件激活环境。Conda 的安装目录下有一个 Scripts\activate.bat 文件,用法如下:
cmd复制call C:\Users\<用户名>\Miniconda3\Scripts\activate.bat base
运行后你会发现命令行提示符前面多了一个 (base),说明环境切换成功。这个方法对老版本的 conda 和系统脚本兼容性都还不错,但因为它是旧式的激活方式,在 conda 4.4 之后虽然还能用,官方已经不再推荐。
如果想要更好的兼容性,还有另一种手动方式。直接调用 conda.exe 的 activate 子命令:
cmd复制C:\Users\<用户名>\Miniconda3\Scripts\conda.exe activate base
但这种方式只适用于一部分版本,某些版本会提示你“不是 shell 函数无法直接激活”,所以应急优先级低于 activate.bat。
4.3 方案三:PowerShell 里直接 Import-Module
如果你用的是 PowerShell,而且不想设置执行策略,可以在每次打开终端时手动执行初始化的那一行:
powershell复制(& "C:\Users\<用户名>\Miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
执行完之后,当前的 PowerShell 会话里 conda 函数就可用,你可以正常使用 conda activate。但是关闭终端后下次还得重新执行一遍。
如果你觉得每次手动执行太麻烦,可以做一个 PowerShell 函数,写在 $PROFILE 文件里。就算执行策略是 Restricted,PowerShell 在启动时虽然可能不加载 profile,但你可以通过设置 -ExecutionPolicy Bypass 启动 PowerShell,然后用点源方式手动加载。比如创建一个专门的 Use-Conda.ps1 脚本,里面放上面那行命令,每次需要时执行:
powershell复制powershell -ExecutionPolicy Bypass -File .\Use-Conda.ps1
用 -ExecutionPolicy Bypass 参数可以只对当前进程绕过执行策略,不用修改系统设置,在权限受限的办公电脑上很实用。
4.4 三种应急方案的取舍参考
| 解决方案 | 是否修改系统 | 每次是否重复执行 | 适用场景 |
|---|---|---|---|
| Anaconda Prompt 快捷方式 | 否 | 不需要 | 临时使用,不折腾配置 |
| cmd 里 activate.bat | 否 | 需要(每会话一次) | 只需在 cmd 里用 conda |
| PowerShell 手动 hook | 否 | 需要(每会话一次) | 只在某些会话中使用 conda |
| 修复 init + 执行策略 | 是 | 不需要 | 长期反复使用,推荐 |
如果只是救急,方案一足够。但如果你的日常工作要频繁切换环境,我建议还是回到第 3 节,把 init 或者执行策略的问题彻底修好。
5. VSCode 等 IDE 内部终端特别说明
很多人不是直接在系统终端里用 conda,而是在 VSCode 的终端里使用。即使你系统终端已经修复好了,VSCode 内置终端也可能出现 init 不生效的情况。原因不复杂:VSCode 内置终端启动时会继承 VSCode 进程的环境变量,而 VSCode 进程可能是从桌面快捷方式启动的,并不一定读取了用户最新修改的 PATH 或 profile。
这种情况下,先关闭所有 VSCode 窗口,然后在系统的 PowerShell 里重新执行一次 conda init powershell,再重启 VSCode。如果依然不行,检查 VSCode 的设置项 terminal.integrated.defaultProfile.windows,确认为 PowerShell 而不是一些自定义终端配置。
还有一个小概率的问题来自 VSCode 的 Python 插件。如果 Python 插件自动选择了解释器,它会在集成终端里自动执行“激活”操作,但这个操作不一定会走 conda 的 init 脚本,这时在 VSCode 里手动切换右下角 Python 解释器到目标 conda 环境,会比直接在终端里敲命令更靠谱。
6. 再谈一个隐藏因素:多版本 Python 和 conda 的冲突
我在实际排查里遇到过不少这样的情况:用户系统里先装了 Python,后来又装了 Anaconda 或者 Miniconda。两个发行版都往 PATH 里写了自己的入口,但 Windows 的 PATH 顺序决定了谁先被找到。如果你打开 cmd 输入 python 进入的是系统自带 Python,输入 pip 也是那个 Python 的 pip,那说明系统 Python 的路径排在了 conda 的路径前面。
这样的环境里,conda 创建的虚拟环境虽然在工作,但 Python 包却不是从你激活的环境里来的,很多“activate 无效”的错觉其实是“激活了但 python 还是旧的那个”造成的。
检查方法很简单,激活环境后执行:
bash复制where.exe python
conda env list
python -c "import sys; print(sys.prefix)"
如果 where python 显示的路径不在当前 conda 环境目录里,说明 PATH 顺序出了问题。解决办法是把 conda 的路径移到系统 Python 前面。在系统设置里打开“编辑环境变量”,手动把 conda 的三个路径上移到列表顶部。不建议直接删除系统 Python,因为有些工具依赖系统 Python 安装器注册的路径。
7. 我踩过的一些坑,希望你避开
说几个我在 Windows 上反复踩过的坑,有些甚至困扰了我好几天才反应过来。
7.1 安装了多份 conda,自己却不知道
曾经我在机器上装过 Anaconda,后来为了省空间又装了 Miniforge,结果两边的路径都在 PATH 里。命令行输入 conda 调用的是 Anaconda 的,但 Miniforge 也注册了自己的 init 配置。偶然一次操作时我先执行了 Miniforge 的 init,再打开终端时初始化的是 Miniforge 的函数,而 conda 命令却还是老 Anaconda 的,两个版本打架,activate 各种报错。后来彻底卸载了其中一份才消停。
建议:如果你决定用 Miniconda,就把 Anaconda 卸载干净;决定用 Anaconda,就别装 Miniforge。少装一个发行版,少不少麻烦。
7.2 安装路径里带有中文或空格
Windows 用户经常把软件装在 D:\软件\Anaconda3 这种带中文或空格的目录里。conda 的脚本对路径中的空格处理得还行,但某些旧版本的初始化脚本对非 ASCII 字符支持不好,会导致 profile 里的脚本路径转义错误,init 写入了,activate 时却找不到文件。
最稳妥的做法是安装时就把路径选成纯英文、无空格的目录,比如 C:\Miniconda3 或 D:\DevTools\Miniconda3。已经装在中文路径下的,建议重装,不要和自己较劲。
7.3 杀毒软件拦截 profile 写入
Windows Defender 或者第三方杀毒软件有时候会把 conda 往 AppData 下写初始化脚本的操作当成可疑行为拦截。这种情况下 conda init 并不会报错,你看到的还是“completed”,但 profile 文件里就是没有内容。之前我遇到过一次,排查到最后才发现是杀毒软件把 Microsoft.PowerShell_profile.ps1 隔离了。恢复文件并把 conda 目录加入白名单才解决。
7.4 双击快捷方式启动的终端和你用命令行启动的终端环境不一样
很多人习惯用一些终端工具,比如 Windows Terminal、Cmder、ConEmu。这些工具可能自带启动参数,有的会绕过 PowerShell 的 profile,有的会直接以 cmd 的某种特殊模式启动。这就导致了“一种终端里能用,另一种终端里不能用”的诡异现象。
解决思路是:先明确你日常使用的是哪种终端,就把那种终端的 init 配好;不要在多种终端之间挣扎,行为差异往往不是 bug,而是不同 shell 初始化机制的必然结果。
8. 如果以上都试过还是不行,最后给你三条建议
说实话,到这一步还没解决的情况真的很少了。如果依然卡住,我建议你按下面三个方向再想想。
第一,确认你的 conda 是不是真的需要 init/activate。很多人只是想让某个 Python 程序跑起来,未必需要创建虚拟环境和切换环境。如果你只需要一个固定的 Python 解释器,直接在 IDE 里配置好解释器路径就行,完全可以不碰 conda 的命令行激活功能。
第二,考虑直接重装 conda 到默认路径。有些人装 conda 的时候改了很多自定义选项,比如不创建开始菜单快捷方式、不注册 PATH、只给当前用户安装。这些选项每一项单独看都没问题,但叠加起来可能让 conda 在 shell 集成方面出现配置遗漏。重装一遍,采用默认选项,大多数时候能省掉无限排查时间。
第三,查看官方文档。Conda 的文档对于 shell 集成的说明更新得很快,老教程经常滞后于版本变化。如果命令行为跟教程对不上,优先以官方文档为准。
9. 分享一个我自己常用的快速自检脚本
最后分享一段我在帮同事排查时经常用的 PowerShell 自检脚本,它会一口气输出 conda 版本、路径、profile 路径、执行策略、conda 环境列表和当前 python 路径。你在已经修好的机器上跑一次,再在有问题的机器上跑一次,对比一下输出差异,问题基本就暴露了。
powershell复制Write-Host "=== Conda Version ==="
conda --version
Write-Host "`n=== Conda Path ==="
(Get-Command conda).Source
Write-Host "`n=== PowerShell Profile ==="
$PROFILE
Write-Host "`n=== ExecutionPolicy ==="
Get-ExecutionPolicy -List
Write-Host "`n=== Conda Envs ==="
conda env list
Write-Host "`n=== Current Python ==="
where.exe python
如果运行这个脚本时 conda 命令本身就不存在,那问题就回到了第 1 节里的情况一,先解决 PATH 再说。如果输出里同时出现了多个 conda 路径,先去重,再来谈激活。
Windows 上的 conda 初始化问题,本质上不是什么高深的技术难点,但因为它牵扯到终端类型、环境变量、执行策略、注册表好几个层面,所以会显得很难缠。理清机制、按部就班地排查,你会发现大多数情况下,问题就出在那几个最容易忽略的小细节上。实际干过一次之后,下次再遇到,你一眼就能猜到又是哪一步没到位。
