从 cmd 换到 PowerShell 之后,conda activate 经常不可用。不是环境没装上,是 PowerShell 还没接上 conda 的 hook。
先初始化
在 PowerShell 里:
powershell
conda init powershell关掉窗口再开一个。正常的话,提示符前面会出现 (base) 之类的环境名。激活时要写完整命令:
powershell
conda activate myenv和 cmd 里有时直接敲环境名不同。
脚本被禁止运行
重启后可能看到:
text
无法加载文件 ...\profile.ps1,因为在此系统上禁止运行脚本。Windows 默认执行策略是 Restricted。conda 的 hook 是一份 .ps1,所以被拦住。
用管理员 PowerShell:
powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned再开一个普通窗口。RemoteSigned 允许本地脚本,远程脚本仍要签名,比 Unrestricted 合适。只想对当前用户改、不动整机策略:
powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedNo command 'conda conda'
这是 conda 4.6.8 到 4.6.11 附近的老 bug,hook 把 conda 写重了。新版本基本见不到。若正好落在这个区间,把 base 里的 conda 换成该区间之外的版本,再跑一次 conda init powershell。
不必一上来就降级。先 conda --version,确认真是那段,再动手。