0
1

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 5 years have passed since last update.

VSCodeのタスクでAnaconda仮想環境を使う(Windows)

Last updated at Posted at 2019-08-07

WindowsにおけるVSCodeでAnaconda(Miniconda)の仮想環境を使うときのちょっとしたTipsです.ここでは Miniconda3 を C:/Miniconda3 にインストールしたものとして説明しています.

Pythonの開発環境であれば,インタープリターとしてAnacondaの仮想環境を選択することができるので問題はないのですが,Pythonを使わないで Anaconda の仮想環境を使おうとすると,少し設定が必要です.AnacondaはPython以外でも仮想環境として便利なので,VSCodeのタスクと連携させて効率化出来たらいいなと思っています.また,環境変数PATHに登録するのは手軽ではありますが,しないことを前提にしています.

VSCodeのターミナルにおいてAnaconda (Miniconda) の仮想環境を使うときは terminal.integrated.shell.windowsterminal.integrated.shellArgs.windows に以下のように設定する方法がよく見つかります.

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K", 
  "C:\\Miniconda3\\Scripts\\activate.bat", 
  "C:\\Miniconda3"],

これでターミナルを開くと仮想環境が base になっている状態になります.

2019-08-08_01h05_17.png

しかし,この設定をするとVSCodeのタスクを実行すると引数が合っていなくて動作しなくなることがあります.例えば,タスクの種類が npm でスクリプトが install の場合,実行すると

2019-08-08_01h05_57.png

これは,実際には

C:\Miniconda3\Scripts\activate.bat C:\Miniconda3 /d /c npm install

が実行されていて,activate.bat の引数が不正になってしまっています.
そこで,次のようなバッチファイルを使って対応します.適当な場所に例えば C:\Miniconda3\vscode_conda.bat というファイルを作成します.そのファイルの中身は次のようにします.

@echo off
call C:\Miniconda3\Scripts\activate.bat C:\Miniconda3
setlocal enableDelayedExpansion
set command=
:loop
if "%1"=="/d" goto :next
if "%1"=="/c" goto :next
if "%1"=="" goto :confirm
if "!command!"=="" (
    set command=%1
) else (
    set command=!command! %1
)
:next
shift
goto :loop
:confirm
if not "!command!"=="" !command!
endlocal

簡単に説明すると,まずAnacondaの仮想環境を有効にしてから,引数の /d /c 以降をコマンドとして再実行しています.
そのため,このやり方だと /d /c オプションが無視されます.

これを terminal.integrated.shellArgs.windows に設定します.

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K", "C:\\Miniconda3\\vscode_conda.bat"];

これで,ターミナルを開いても,タスクを実行してもAnacondaの仮想環境上で動作するようになります.

この方法以外にもっとスマートなやり方がありましたら,教えてもらえると助かります.

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?