Anaconda Prompt和Anaconda PowerShell Prompt工作原理

概述

Anaconda安装完成后,开始菜单所有程序``Anaconda3中会添加Anaconda Prompt和Anaconda PowerShell Prompt两个菜单项。

这两个菜单项是快捷方式。通过查看这两个快捷方式的属性可知:

  • Anaconda Promp对应的命令为%windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
  • Anaconda PowerShell Prompt对应的命令为%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\ProgramData\Anaconda3' "

在这里插入图片描述

Anaconda Promp原理

Anaconda Promp菜单项打开后的窗口截图如下所示。

在这里插入图片描述

通过 Anaconda Promp对应的命令%windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3可知。

Anaconda Promp调用了%windir%\System32\cmd.exe即系统CMD程序;"/K"CMD程序的参数,表示;C:\ProgramData\Anaconda3\Scripts\activate.batAnaconda虚拟环境的激活脚本;C:\ProgramData\Anaconda3Anaconda虚拟环境base的目录。

(base) C:\Users\Administrator>conda env list
# conda environments:
#
base                  *  C:\ProgramData\Anaconda3
foo                      C:\ProgramData\Anaconda3\envs\foo

相当于先打开CMD程序,然后激活Anacondabase虚拟环境。下面我们做一个验证!

  • 首先运行CMD程序。
  • 然后执行C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3命令。

我们可以发现其效果与直接打开 Anaconda Promp一致。

修改Anaconda Promp打开的默认虚拟环境

打开CMD程序,输入如下命令C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
从如下结果可知,base虚拟环境被激活了。

C:\Users\Administrator>C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
(base) C:\Users\Administrator>

打开CMD程序,输入如下命令C:\ProgramData\Anaconda3\Scripts\activate.bat foo
从如下结果可知,base虚拟环境被激活了。

C:\Users\Administrator>C:\ProgramData\Anaconda3\Scripts\activate.bat foo
(foo) C:\Users\Administrator>

因此,打开Anaconda Promp属性,将目标修改为%windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat foo。再次打开这个快捷方式,命令提示符就会变成(foo) C:\Users\Administrator>,即默认进入foo虚拟环境。
在这里插入图片描述

Anaconda PowerShell Prompt原理

Anaconda PowerShell Prompt的原理与Anaconda Prompt的原理类似,%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\ProgramData\Anaconda3' "%windir%\System32\WindowsPowerShell\v1.0\powershell.exePowerShell程序的路径;-ExecutionPolicy ByPass -NoExit -Command为相关参数;'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1'Anaconda的一个powershell脚本;conda activate 'C:\ProgramData\Anaconda3'是激活base虚拟环境的命令。
在这里插入图片描述

类似与Anaconda Prompt,将Anaconda PowerShell Prompt属性的目标值修改为%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1' ; conda activate foo",即默认进入foo虚拟环境。

猜你喜欢

转载自blog.csdn.net/mighty13/article/details/119881204