尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

使用 conda 懒加载的方式减少 PowerShell 的启动时间
📅 发布时间:2026/6/20 7:42:57

使用 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 命令

沉舟侧畔千帆过,病树前头万木春。

相关新闻

  • 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析 - 实践
  • podman 替代docker
  • m1芯片装windows系统使用感受

最新新闻

  • 从旋转不变到精准定位:深入解析ESPRIT算法的原理与实现
  • VisualGDB 6.0:解锁Visual Studio跨平台嵌入式与Linux开发新体验
  • 2026 年吉林市厨卫屋顶防水修缮三家对比测评 吉修匠 99.8 分稳居榜首 - 吉修匠
  • 企业境外投资证书丢失怎么登报?2026最新办理流程 - 速递信息
  • 2026 国内论文辅导机构行业盘点:5 家实测机构与甄选攻略 - 艾德思Editsprings
  • 2026 630~650分段人工智能AI专业985高校适配指南:中南大学人工智能领域专业实力解析 - 温茶叙旧

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号