运行PowerShell时无法启动conda.exe,提示无效命令「hook」如何解决?
报错原因
- 核心原因是你安装的Anaconda自带的conda版本低于4.6,
shell.powershell hook是conda 4.6版本之后才新增的命令,旧版本conda无法识别该指令,执行后返回空内容,空内容传递给Invoke-Expression时触发参数为空的校验报错。 - 次要可能性是配置文件中填写的conda.exe路径和你实际的Anaconda安装路径不一致,或者你的PowerShell配置文件存放在内网共享路径下,读取执行时出现权限/路径异常导致命令返回空。
修复步骤
方案1:升级conda(推荐)
- 打开Anaconda自带的Anaconda Prompt命令行工具(该工具启动不会触发PowerShell的报错)
- 执行升级命令:
conda update -n base conda
- 升级完成后执行重新初始化PowerShell的命令:
conda init powershell
- 重启PowerShell即可恢复正常。
方案2:手动修改PowerShell配置(适配旧版本conda/无法升级的场景)
- 打开
My Documents\WindowsPowerShell\profile.ps1文件 - 若不需要每次打开PowerShell都自动加载conda环境,直接删除或注释掉
#region conda initialize到#endregion之间的所有内容即可,后续需要使用conda时打开Anaconda Prompt操作即可。 - 若需要保留conda自动加载,将原有初始化行的
hook参数替换为旧版本支持的root参数,修改后内容如下:
#region conda initialize # !! Contents within this block are managed by 'conda init' !! (& "C:\users\X\anaconda3\Scripts\conda.exe" "shell.powershell" "root") | Out-String | Invoke-Expression #endregion
- 保存文件后重启PowerShell即可。
方案3:路径异常修复
如果是conda.exe路径填写错误导致的问题,将配置中的C:\users\X\anaconda3\Scripts\conda.exe替换为你本地实际的conda.exe完整路径即可。
内容的提问来源于stack exchange,提问作者ca9163d9
相关产品推荐
相关产品推荐

