问题

当打开 windows powershell 的时候可能需要非常长的时间进行加载,就比如我的,打开一次居然需要足足 5 秒,这也太浪费生命了。

原因

本质上是因为个人配置文件($PROFILE)或系统配置文件包含太多代码又或者是过多的加载模块自动加载

解决方法

查看位置

先要查看一些配置文件在哪里:

echo $PROFILE

输入后可以看到位置,找到这个后缀为 .ps1 的文件。

问题原因

使用记事本打开,当然也可以使用 vscode 打开,更好看一些。

这里就可以看到启动慢的原因了。

可以看到我的 profile 文件只有这么几行代码,是 miniconda 引起的。(是因为我之前输入了 conda init 这个指令,不过你若想要使用 miniconda 这个指令是一定要输入的,不然没法激活 conda 安装的虚拟环境。至少我是遇到过必须让我初始化的状况,有时好像也不需要初始化

只要打开就会进行一次初始化。

所以相当的慢。

优化

可以把上面的代码都注释掉,使用我下面给出的代码。

function Initialize-Conda {
    If (Test-Path "D:\Program\miniconda3\Scripts\conda.exe") {
        Write-Host "Init Conda Env..." # 这是提示词,删了也无所谓
        (& "D:\Program\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
    } # 这个if语句就是我上面红框框起来的,根据自己的实际情况更改。
}
 
# 创建conda命令别名,使用condac进行初始化
Set-Alias -Name condac -Value Initialize-Conda

保存,然后重启 powershell。

此时直接就进入了,不用等待。

输入 condac 指令即可初始化。

然后激活环境。

理念

采用了”延迟加载”模式,其主要优点是:

  1. 提高PowerShell启动速度,因为conda初始化不再在启动时执行
  2. 只在实际需要时才加载conda,节省不使用conda时的系统资源