Windows 显示 Conda 环境名称和“conda init powershell”命令
Windows 显示 Conda 环境名称
Windows 下安装完成 Conda 后,打开PowerShell
,并不能像 Linux 下那样显示当前的 Conda 环境名称(安装后默认是base
)。
实现方式
为了实现显示当前环境的效果,在 Windows 的终端上需要执行:
conda init powershell
执行后,重新打开PowerShell,就能像 Linux 下那样显示当前的 Conda 环境名称。
注意事项⚠️
-
确保可执行 Conda 命令,即你的 Conda 程序路径已添加到 Windows 环境变量。
当下包含 Conda 的安装程序,在安装时勾选 "Add xxx to my PATH environment variable"即可,xxx 代表你的安装程序,我用的是miniforge,当然还有miniconda,Anaconda之类,可能存在些许差异。
-
确保可运行脚本
conda init powershell
命令会修改 PowerShell 的启动配置文件 (profile.ps1
),使得每次打开 PowerShell 时自动初始化 Conda。Windows 默认情况是下是禁止运行脚本的,需使用如下命令修改策略set-executionpolicy remotesigned
实现原理
执行 conda init powershell
时,Conda 会进行以下操作:
- 配置文件的修改:Conda 会在 PowerShell 的配置文件(一般是
$PROFILE
)里添加一段初始化代码。你可以通过在 PowerShell 中输入$PROFILE
来查看该文件的路径。 - 钩子函数的注册:添加的初始化代码主要包含一个钩子函数,其作用是在 PowerShell 启动时,自动设置 Conda 的运行环境。
- 环境变量的动态设置:当你激活或者退出某个环境时,钩子函数会动态地修改系统的环境变量,确保各种命令能够正确运行。
配置文件示例
执行 conda init powershell
后,PowerShell 配置文件中会新增类似下面的代码:
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
If (Test-Path "C:\Users\你的用户名\miniforge3\Scripts\conda.exe") {
(& "C:\Users\你的用户名\miniforge3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
}
#endregion
这段代码的作用是在 PowerShell 启动时,调用 Conda 的钩子函数,从而完成环境的初始化工作。