21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows Terminal に Anaconda Powershell Prompt を追加するには?

Last updated at Posted at 2020-05-14

あらすじ

Windows 10で、Windows TerminalAnaconda PowerShell Promptを追加する話です。
検索してもAnaconda Promptを追加できるものしか見つからなかったので、この記事を書きました。

※Jsonファイルによる設定だけでなく、GUI設定ができるようになったので、追記しました。

イントロ

[Anaconda](https://docs.conda.io/projects/conda/en/latest/glossary.html## イントロ

長いことCondaに触れている人なら、誰しも最新の環境で利用したいと願っていることでしょう。
image.png

以前のアップデート

Anaconda PromptPowershellに対応しましたが、それでも完璧な対応ではありませんでした。conda initすることにより、次回からPowershellの起動毎に、condaコマンドのための環境変数%PATH%を設定し、(base)仮想環境をactivateするという、待ち時間の苦痛を強いるものだったからです。

その後のアップデート

現在はAnacondaもしくはMinicondaのインストール直後からAnaconda PowerShell PromptAnaconda Promptに分かれてあらかじめショートカットが用意されており、非常に便利になっています。
image.png

統合ターミナルの登場

このような状況のなか、Windows Terminalというものが登場しました。
様々な種類のターミナルを、単一ウィンドウ内でタブとして使うことができる優れものです。
しかも、PowerShellの起動時間が短縮されており、ストレスフリーです。

これはもう、Anaconda Powershell Prompt
Windows Terminalに追加するしかないですよね。
さて、どうやったらよいのでしょうか?

設定方法

まず、設定ファイルは、PowerShell風に言うと、

$env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

に置いてあります。Cmd風に言うと、

%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

に置いてあります。

そして、このjsonファイルに、以下を追記します。

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44b9}",
    "name": "Anaconda Prompt",
    "startingDirectory" : "%HOMEPATH%",
    "commandline": "%userprofile%\\Documents\\PowerShell\\conda.cmd",
    "icon": "%SystemDrive%\\tools\\miniconda3\\Menu\\Iconleak-Atrous-PSConsole.ico",
    "hidden": false
}

設定項目の詳細

  • guidには、New-GUIDを使用して作成した値を入れるらしいです。しかし面倒なので、Powershellguidをコピーペーストして、1文字変えただけとしました。

  • nameは自分が分かれば何でもいいと思います。

  • iconは好きなものを使っていいですが、私は、公式のアイコンにリンクしました。

  • commandlineには以下のバッチファイルを実行するように指定しています。

%userprofile%\Documents\PowerShell\conda.cmd
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\tools\miniconda3' "

このバッチファイルの中身は、C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)にあるショートカットファイルのうち、PowerShellの方のリンク先文字列をコピーペーストしただけです。

stackoverflowなどを見てみると、「commandlineには、スタートメニューのショートカットファイルから
リンク先文字列をコピーして貼り付ける」と書いてあるものが多いです。しかし、これは動作しません。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)にあるショートカットファイルのプロパティは以下ですが、これをコピーペーストしてcommandlineに指定しても正常なコマンドとして受け取ってもらえないからです。
image.png

-Command以降の部分がどうしてもエラーになって上手くいきませんでした。といっても、Powershellの引数の受け取りかたが謎すぎるから私には理解できないだけかもしれません。なにか方法があるのでしょう。

時間がもったいないので、この文字列をバッチファイルに書き込み、それを実行させることにしました。

追記

@nmoa さんからコメント頂いた結果、commandlineに以下の設定をしたら正常に動作しました。

"%windir%/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy ByPass -NoExit -Command \"& 'C:/tools/miniconda3/shell/condabin/conda-hook.ps1' ; conda activate 'C:/tools/miniconda3' \""

そのため、jsonは下記のようになります。

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44b9}",
    "name": "Anaconda Prompt",
    "startingDirectory" : "%HOMEPATH%",
    "commandline": "%windir%/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy ByPass -NoExit -Command \"& 'C:/tools/miniconda3/shell/condabin/conda-hook.ps1' ; conda activate 'C:/tools/miniconda3' \"",
    "icon": "%SystemDrive%/tools/miniconda3/Menu/Iconleak-Atrous-PSConsole.ico",
    "hidden": false
}

さらに、コメントいただく前は以下の画像のように、conda環境を呼び出すためのコマンドが表示されていました。
image.png
修正を行った後はキレイさっぱりです。
image.png

設定ファイル例

そして最終的に、私の場合は以下のような設定になりました。
コメント欄で教えていただいた結果を反映しています。

%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
	        "fontFace": "Cascadia Code PL",
                "useAcrylic": true,
                "acrylicOpacity": 0.7
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                // Make changes here to the cmd.exe profile
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "cmd",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                //"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
                //"hidden": false,
                //"name": "PowerShell",
                //"source": "Windows.Terminal.PowershellCore"
	        "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
	        "name": "PowerShell Core",
	        "source": "Windows.Terminal.PowershellCore",
	        "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{46ca431a-3a87-5fb3-83cd-11ececc031d2}",
                "hidden": false,
                "name": "kali-linux",
                "source": "Windows.Terminal.Wsl"
            },
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl"
            },
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44b9}",
                "name": "Anaconda Prompt",
                "startingDirectory" : "%HOMEPATH%",
                "commandline": "%windir%/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy ByPass -NoExit -Command \"& 'C:/tools/miniconda3/shell/condabin/conda-hook.ps1' ; conda activate 'C:/tools/miniconda3' \"",
                "icon": "%SystemDrive%/tools/miniconda3/Menu/Iconleak-Atrous-PSConsole.ico",
                "hidden": false
            }
        ]
    },

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

結果

以下が設定反映後の状態です。いかがでしょうか。
image.png

追記 2021/04/29

image.png
image.png
image.png

参考

設定項目について、より詳しく知りたい人は、[Editing Windows Terminal JSON Settings](https://github.com/microsoft/terminal/blob/master/doc/user-docs/UsingJsonSettings.md## 参考

環境

この記事での環境は以下です。

  • Windows 10 Pro 1909
  • Chocolatey v0.10.15
  • Miniconda3 4.7.12.1
  • Windows Terminal 0.11.1333.0

私の場合は、Chocolateyを利用してMiniconda3Windows Terminalをインストールしています。
直接公式サイトからダウンロードしても、ほぼ同じで行けると思います。

Excelsior!

21
17
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?