首页 > 系统相关 >conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)

conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)

时间:2023-08-21 19:07:36浏览次数:32  
标签:Loading xxxx 配置文件 personal powershell 命令 conda Anaconda PowerShell



文章目录

  • 一、问题描述
  • 二、问题溯源
  • 三、解决方案
  • 3.1 测试
  • 3.2 方案一:不在powershell中使用conda
  • 3.2 方案二:需要时再在powershell中使用conda(推荐)
  • 四、powershell 7 特点


一、问题描述

powershell启动缓慢:

conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)_conda

每次启动都会加载很久的配置文件:Loading personal and system profiles took xxxx ms

我用的是powershell 7.xx,系统自带的5.x可能也会出现这样的问题,一个道理。

新版本的名称是pwsh.exe即,输入win r,然后输入pwsh,回车,即可快速打开。

这个很好用,建议安装(去微软官网下载安装)。

二、问题溯源

既然是加载配置文件花费了较长的时间,就看看配置文件是什么。

输入:

$PROFILE
  • $PROFILE.AllUsersAllHosts: 对所有用户和所有主机有效的配置文件。
  • $PROFILE.AllUsersCurrentHost: 对所有用户和当前主机有效的配置文件。
  • $PROFILE.CurrentUserAllHosts: 对当前用户和所有主机有效的配置文件。
  • $PROFILE.CurrentUserCurrentHost: 对当前用户和当前主机有效的配置文件。 当你直接输入 $PROFILE 时,PowerShell 实际上返回的是 $PROFILE.CurrentUserCurrentHost 的值,这是对当前用户和当前主机有效的配置文件。

会显示你的配置文件的位置,比如:

C:\Users\xxx\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

进入相关目录,你可能会发现:

  • 没有Microsoft.PowerShell_profile.ps1
  • 只有:profile.ps1

经过测试,名字不影响。

打开配置文件可以看到:

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

这是关于conda环境的内容,是你在某次执行:conda init powershell 后生成的。

配置文件解读:

这段脚本的目的是检查 conda.exe 是否存在于指定的路径中。如果存在,它将执行 conda.exe 以为 PowerShell 生成初始化脚本,并执行该脚本来设置 Anaconda 的环境。这确保了当你在 PowerShell 中使用 conda 命令时,所有必要的环境变量和设置都已正确配置。

  1. If (Test-Path "E:\anaconda3\Scripts\conda.exe") {这是一个条件语句,它检查指定的路径(即 E:\anaconda3\Scripts\conda.exe)是否存在。Test-Path 是一个 PowerShell 命令,用于确定文件或目录是否存在。如果 conda.exe 存在于指定的路径中,那么大括号 {} 内的代码将被执行。
  2. (& "E:\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression这是一个复杂的命令,我会分部分解释:
  • & "E:\anaconda3\Scripts\conda.exe" "shell.powershell" "hook": 这部分使用 & 运算符来执行 conda.exe。它传递了两个参数给 conda.exeshell.powershellhook。这基本上是告诉 conda 为 PowerShell 生成初始化脚本。
  • | Out-String: 这部分将 conda 命令的输出转换为字符串格式。| 是一个管道符号,它将前一个命令的输出传递给后一个命令。
  • ?{$_}: 这是一个过滤器,它确保传递给下一个命令的字符串不是空的。
  • Invoke-Expression: 这个命令执行传递给它的字符串作为 PowerShell 命令。所以,conda 生成的初始化脚本将被执行,从而设置 Anaconda 的环境。
  1. }这是 If 语句的结束大括号。

三、解决方案

3.1 测试

把配置文件注释掉(井号),再次启动powershell。

现在是秒打开,但是不会进入conda环境(base)。

conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)_原力计划_02

3.2 方案一:不在powershell中使用conda

在powershell中使用conda无非就是配置虚拟环境。那可不可以不用powershell呢?

Anaconda 通常会为用户提供两个 PowerShell 变种:

  1. Anaconda PowerShell Prompt: 这是一个特殊的 PowerShell 提示符,预先配置了所有必要的环境变量和设置,以便用户可以直接使用 conda 和其他 Anaconda 工具。当你从这个提示符启动时,你不需要执行任何额外的初始化步骤就可以使用 Anaconda 的所有功能。
  2. Anaconda Prompt (cmd): 这是一个基于 Windows 命令提示符 (cmd.exe) 的提示符,也预先配置了 Anaconda 的环境。虽然它不是 PowerShell,但它的功能与 Anaconda PowerShell Prompt 类似。
  3. conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)_运算符_03

这两个提示符的目的都是为了简化用户的工作流程,使他们能够轻松地使用 Anaconda 和其相关工具,而无需手动配置环境或执行其他初始化步骤。

如果你已经安装了 Anaconda,你应该可以在 Windows 的开始菜单中找到这两个提示符。如果你主要使用 PowerShell,我建议使用 “Anaconda PowerShell Prompt”,因为它提供了 PowerShell 的所有功能,同时还集成了 Anaconda 的工具和设置(当然了,打开速度比较慢)。

conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)_conda_04

因此,方案一可以把powershell的配置文件注释掉,使用Anaconda PowerShell Prompt即可。

3.2 方案二:需要时再在powershell中使用conda(推荐)

依然是注释掉powershell配置文件中关于conda的部分。

把关于conda的配置单独存为一个文件,需要使用conda的时候,在powershell中运行这个脚本即可。

具体做法:

  1. 运行powershell,查看默认命令执行的目录,一般是:C:\Users\username
  2. 为了方便,把关于conda的配置文件报错在上述位置,比如命名为:conda.ps1
  3. 需要在powershell中使用conda的时候,运行这个脚本:./conda.ps1./表示本目录,同Linux);

四、powershell 7 特点

PowerShell 7 引入了许多新特点和改进。以下是一些主要的特点:

  1. 跨平台支持:PowerShell 7 是跨平台的,支持 Windows、macOS 和 Linux。

  2. 与 Windows PowerShell 兼容:PowerShell 7 旨在与 Windows PowerShell 5.1 兼容,使得迁移变得更加容易。

  3. 新的并行功能:通过 ForEach-Object -Parallel,用户可以并行运行脚本块。

  4. 新的运算符:引入了 ????= 运算符,用于处理 $null 值。

  5. 链式运算符:引入了 &&|| 运算符,允许用户链式执行命令。

  6. 三元运算符:PowerShell 7 添加了三元运算符 a ? b : c

  7. 新的 Get-Error 命令:这个命令提供了一个详细的、结构化的错误视图。

  8. 其他改进:包括对 JSON cmdlets 的性能改进、新的 Get-SubString 命令、以及其他许多增强功能和修复。

  9. 历史命令: PowerShell 7(以及之前的版本)都有历史命令功能。这个功能允许用户查看和回顾之前执行的命令。(不同于cmd,即使关闭后重新打开,也可以查询历史命令)以下是与历史命令功能相关的一些基本操作:

    1. Get-History:这个命令会列出之前执行的所有命令的历史记录。

    2. Invoke-History:这个命令允许用户重新执行之前的命令。例如,Invoke-History -Id 5 会重新执行ID为5的命令。

    3. Add-History:这个命令允许用户添加命令到历史记录中。

    4. Clear-History:这个命令会清除所有的命令历史记录。

    5. 上/下箭头键:在PowerShell中,用户可以使用上/下箭头键来回顾和执行之前的命令。

    6. Ctrl + R:这是一个交互式搜索功能,允许用户搜索之前执行的命令。

  10. 智能命令补全 : 我常用的是:输入一个字符后,会以浅色显示历史命令,用键盘右键即可补全
  11. conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles took xxxx ms.)_conda_05



把 永 远 爱 你 写 进 诗 的 结 尾 ~




标签:Loading,xxxx,配置文件,personal,powershell,命令,conda,Anaconda,PowerShell
From: https://blog.51cto.com/cquptlei/7178172

相关文章

  • mysql在启动时报错"Failed to open log xxxxxx/mysql-bin.000003 not found,errno 2"
    问题描述:mysql在启动时报错"Failedtoopenlogxxxxxx/mysql-bin.000003notfound,errno2",如下所示:数据库:mysql5.5.18系统:rhel6.564位架构:一主一从场景描述:主库最新binlog文件被手动删除后,重启数据库报错.1、异常重现23082014:52:19InnoDB:1.1.8started;logseque......
  • SyntaxError: /xxxx.vue: Unexpected token, expected “,“,[object Promise]export {
    本地老工程vue2.7.x+webpack4在升级webpack5的时候遇启动和打包报错:SyntaxError:SyntaxError:/xxxxx.vueUnexpectedtoken,expected","(1:8)>1|[objectPromise]|^2|export{render,staticRenderFns}最后才发现是prettier导致的。推荐看......
  • error while loading shared libraries: libxxx.so.0: cannot open shared object fil
    原因编译的时候指定的动态库,没有在运行时查找的目录中,找不到对应的动态库解决方法运行时,指定动态库搜索的路径exportLD_LIBRARY_PATH=/xxx/lib:$LD_LIBRARY_PATH......
  • EBS: Error:Txn Failed WIP_WORK_ORDER_LOCKED (JOBNAME=XXXXX)
    Error:TxnFailedWIP_WORK_ORDER_LOCKED(JOBNAME=XXXXX)whileWIPCompletionfromOracleWMS. (DocID2624324.1)LastupdatedonMAY15,2023APPLIESTO:OracleWorkinProcess-Version12.2.7andlaterInformationinthisdocumentappliestoanyplatform.......
  • Vue中出现“‘xxxxx‘ is defined but never used”解决办法
    【解决办法】:在package.json或者.eslintrc.js中找到 eslintConfig 块,在其rules下加入"no-unused-vars":"off"即可,如下图然后重新npmrunserve即可。其他命令如下:"no-alert":0,//禁止使用alertconfirmprompt"no-array-constructor":2,//禁止使用数组构造器"no-bitwis......
  • 记录--Loading 用户体验 - 加载时避免闪烁
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在切换详情页中有这么一个场景,点击上一条,会显示上一条的详情页,同理,点击下一条,会显示下一条的详情页。伪代码如下所示:我们定义了一个 switcher 模版,用户点击上一条、下一条时调用 goToPreOrNext 方法。该页面......
  • could not find boost (missing iostreams) (found version xxxx)
    具体报错信息如上图,通过终端指定-DBOOST_LIBRARYDIR是无效的,需要在cmakelis中修改。注意这里报错溯源是cmakelistline29,所以修改如下set(CMAKE_INCLUDE_PATH${CMAKE_INCLUDE_PATH}"/home/rzhang/del/include")###新增set(CMAKE_LIBRARY_PATH${CMAKE_LIBRARY_PATH}"/h......
  • 微信小程序11 弹窗showToast,showLoading,showModal
    弹窗是相当常用的功能,在微信里用弹窗还是挺方便的。不同于我们写网页时,对于alert,confirm这些比较简陋的原生弹窗通常要引入第三方插件来美化,微信自带的弹窗效果还不错。放一个按钮,绑定showToast方法。<buttonbind:tap="showToast">点击弹窗1</button>Js方法通用showToast......
  • Linux系统服务器启动SSH服务时出现“error while loading shared libraries”错误该如
    问题描述本文主要介绍在Linux系统服务器启动SSH服务时,命令行或secure日志文件出现类似如下的错误信息。· errorwhileloadingsharedlibraries:libcrypto.so.10:cannotopensharedobjectfile:Nosuchfileordirectory.· PAMunabletodlopen(/usr/lib64/security/pam......
  • Port XXX is already in use. xxxx..解决办法-gradio退出可用
    原因:端口被占用,程序启动后关闭但端口依然存在解决办法:手动杀死端口  1.安装工具(已经有的不需要安装,直接跳到第二步)yuminstallnet-tools-y命令介绍:yum:自动化简单化地管理rpm包的命令。install:安装net-tools:网络工具 2.安装完毕,执行查看端口命令: netstat-tpln......