当前位置: 首页 > news >正文

使用 conda 懒加载的方式减少 PowerShell 的启动时间

使用 scoop 安装的 miniconda3,在 PowerShell 中进行了 conda init 初始化(注意:不是 Windows PowerShell,见下图PowerShell 是在 Microsoft Store 中安装的,link)
image

问题:启动速度太慢,大概需要 4 秒

于是进行优化,原理:不要在 profile 里直接运行 conda 的 heavy hook,而是定义一个名为 conda 的代理函数。这个代理函数第一次被调用时,会执行真正的初始化(替换自己为真实的命令或导入 hook),然后将最初调用的参数传递给 conda。

1、注释掉原来的初始化脚本
位置:"C:\Users\XXX\Documents\PowerShell\profile.ps1"

#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
##If (Test-Path "C:\Users\XXX\scoop\apps\miniconda3\current\Scripts\conda.exe") {
##    (& "C:\Users\XXX\scoop\apps\miniconda3\current\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
##}
#endregion

2、添加新内容
位置:"C:\Users\XXX\Documents\PowerShell\Microsoft.PowerShell_profile.ps1"

#region conda initialize (deferred via proxy)
$condaExe = 'C:\Users\XXX\scoop\apps\miniconda3\current\Scripts\conda.exe'if (Test-Path $condaExe) {function Invoke-CondaInit {param([Parameter(ValueFromRemainingArguments=$true)]$Args)if (-not (Get-Variable -Name '__CondaInitialized' -Scope Script -ErrorAction SilentlyContinue)) {Set-Variable -Name '__CondaInitialized' -Value $true -Scope Scripttry {$hook = & $condaExe 'shell.powershell' 'hook'if ($LASTEXITCODE -ne 0 -or -not $hook) {throw "conda hook failed"}$hook | Out-String | Where-Object { $_ } | Invoke-ExpressionSet-Item -Path Function:conda -Value {param([Parameter(ValueFromRemainingArguments=$true)]$Args)& $condaExe @Args}}catch {Write-Verbose "Conda lazy init failed: $_"Set-Item -Path Function:conda -Value {param([Parameter(ValueFromRemainingArguments=$true)]$Args)& $condaExe @Args}}}& conda @Args}Set-Item -Path Function:conda -Value {param([Parameter(ValueFromRemainingArguments=$true)]$Args)Invoke-CondaInit @Args}
}
#endregion

其他:俺没有为 Windows Powershell 配置 conda 命令

http://www.wxhsa.cn/company.asp?id=1931

相关文章:

  • 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析 - 实践
  • podman 替代docker
  • 202404_古剑山杯_数独
  • m1芯片装windows系统使用感受
  • mac book怎么切换windows系统
  • 硬件内在函数
  • 202205_宁波市赛_DocDocDoc
  • DP题
  • LGP7115 [NOIP 2020] 移球游戏 学习笔记
  • 阿里为何建议MVC+Manager层混合架构?
  • Android(Kotlin)+ ML Kit:移动端英文数字验证码识别实战
  • 用Android(Kotlin)+ ML Kit:移动端英文数字验证码识别实战
  • “人工智能+”的坚硬内核,边缘地带的“数字火种”:大模型如何烧出一片新天地
  • 详细介绍:10:00开始面试,10:06就出来了,问的问题有点变态。。。
  • PHP启动报错:liboing.so.5:cannot op如何处理?
  • 时空倒流 Time - 题解
  • 202508_QQ_XORPNG
  • Voice Agent 全球开发者比赛,TEN Dev Challenge 2025 等你来战!
  • 第02周 预习:Java基础语法2、面向对象入门 - hohohoho--
  • 第六届机器学习与计算机应用国际学术会议(ICMLCA 2025)
  • 设计模式-享源模式 - MaC
  • # 数论知识讲解与C++代码:唯一分解定理、辗转相除法、埃氏筛与线性筛(含质因数分解示例)
  • 第九届交通工程与运输系统国际学术会议(ICTETS 2025)
  • 小红书开源 FireRedTTS-2;全栈开源应用+嵌入式+电路设计:BUDDIE AI 语音交互方案丨日报
  • 设计模式-外观模式 - MaC
  • 深度解析 ADC 偶联技术:从随机偶联到定点偶联,如何平衡抗肿瘤 ADC 的活性、稳定性与均一性?
  • 豆包P图大更新,网友们已经玩嗨了。
  • 【初赛】无向图度数性质 - Slayer
  • $p\oplus q=r$
  • 2025年金融行业API安全最佳实践:构建纵深防御体系