Python環境構築(Anaconda + VSCode) @ Windows10 【2020年1月版】

この記事は最終更新日から1年以上が経過しています。

背景

Anaconda + VS Code でPython環境を作るときに、最新の設定方法が出てこなくて困ったので、今からやる方のために自分のメモを公開します。
2017年頃にVS Codeの仕様変更があったみたいですね。古い解説文を読むときには注意が必要です。

参考にした記事:
@Atupon0302さん : Windows10環境にAnaconda+Visual Studio CodeでPython環境を構築【2017年9月】

この記事で書くこと

この記事では、Windows10 パソコンにAnacondaとVS CodeでPython環境を構築し、簡単なプログラムのビルドとデバッグができるところまでの手順を書きます。

Python導入の目的は、機械学習で遊ぶことですので、機械学習用のPythonライブラリを一気に入れられるAnacondaを使います。
(以前、機械学習関連のライブラリを個別に入れたらものすごく苦労したの。。。)

前提環境

  • Windows10 Enterprise
  • Anaconda 2019.10
  • VS Code 1.41.1
  • VS Code Python Extention 2020.1.58038

手順

Anacondaを入れる

本体のインストール

AnacondaページのDownloadリンクからWindows向けモジュールを入手します。Pythonバージョンは3.xを選択します。
インストーラの内容はすべてデフォルトで、Nextボタンを押すだけです。
私は「Anaconda 2019.10 for Windows Installer」でした。
anaconda1.png

動作確認

スタートメニューからAnaconda3>Anaconda Promptを起動します。
Anaconda Promptで以下を実行して、バージョン番号が返ってきたらOK。

conda -V
python -V 

仮想環境の作成

実行環境のライブラリ構成を保持するために、自分用の仮想環境を作っておきます。
デフォルトではbase環境があり、すでにnumpyなどの便利なライブラリが入っているので、baseをコピーして新しい環境を作成します。
--cloneオプションを使わない場合はまっさらな新環境が作れます。ここに自分で好きなライブラリを追加していきます。(後述)

# py37環境を作成(baseを複製する場合)
conda create -n py37 --clone base 

# py37環境を作成(pythonのみ入れて作成し、必要なライブラリはあとで追加する場合)
conda create -n py37 python=3.7

作成した環境を確認します。

# 環境一覧を表示
conda info -e

有効になっている環境に * がついています。現在はデフォルトのbase環境が有効です。

(base) C:\Users\XXXX>conda info -e
# conda environments:
#
py37                     C:\Users\XXXX\.conda\envs\py37
base                  *  C:\Users\XXXX\Anaconda3

新しい環境にスイッチするにはconda activateコマンド。

# py37環境を有効にする
conda activate py37

成功すると、プロンプトに環境名(py37)がつく

(base) C:\Users\XXXX>activate py37

(py37) C:\Users\XXXX>

その環境に入っているライブラリの表示はconda list

# numpyライブラリのバージョンを見る
conda list numpy
(py37) C:\Users\XXXX>conda list numpy
# packages in environment at C:\Users\XXXX\Anaconda3\envs\py37:
#
# Name                    Version                   Build  Channel
numpy                     1.16.5           py37h19fb1c0_0
numpy-base                1.16.5           py37hc3f5095_0
numpydoc                  0.9.1                      py_0

ライブラリの追加が必要な場合は、conda search conda installで追加する。

# djangoライブラリを探す場合
conda search django

# djangoライブラリを追加する場合
conda install django

環境から抜けるには、conda deactivateコマンド。
(コマンドがdeactivate となっている説明もありますが、現在非推奨なのでconda deactivateにします。)

# 環境から抜ける
conda deactivate

condaコマンドは、Pythonで提供されているPIPコマンドみたいに使います。Anaconda環境では、pipではなくcondaコマンドを使ってパッケージ管理を行います。

Pythonのパス

上記のように、自分の作業に合わせて仮想環境を作って作業するので、WindowsのPATHの設定は行いません。(コントロールパネルから設定するアレ)

VS Codeを入れる

本体のインストール

vscodeページのDownloadリンクからWindows向けモジュールをとってきて入れます。
インストーラの内容はデフォルトで入れます。
vscode.png

動作確認

スタートメニューからVisual Studio Code を起動します。以下VS Codeと記述します。

セットアップ:Pythonをビルド&デバッグできるようにする

  • Python拡張を入れる VS Codeのツールバーの拡張ボタンをクリックして、「Python」で検索し、Python拡張(Python extention for Visual Studio Code)をいれます。

※画像のバージョンでは問題がでたので、最終的にPython Extention 2020.1.58038をいれました。

000231.png

  • パス設定をする VS Codeの、File>Preferences>Settingsで設定画面を開く。
  1. 検索キーに「python.pythonpath」と入れて、Pythonのパスを設定。
    値は、Anaconda上でconda info -eと入力した値を参考にします。
    C:\Users\XXXX\Anaconda3\envs\py37\python.exe

  2. 検索キーに「python.condapath」と入れて、Condaコマンドのパスも設定。
    値はconda.exeがあるディレクトリ名を指定します。(Scripts)
    C:\Users\XXXX\Anaconda3\Scripts\

  • ビルド用のタスクを作成する

適当な作業用フォルダを作成し、test.pyを書きます。
このとき、作業用フォルダがAnacondaの仮想環境の下にあると、後述のデバッグ実行でブレークポイントが使えなくなります。
VS Codeで開発するときは、Anacondaの仮想環境とは別の開発フォルダが必要です(せっかく環境を分けたのに、ちょっと面倒、、、)

参考:VS CodeでPython仮想環境のデバッグ実行時にブレークポイントで止まらない問題

以下はc:\dev\pydevにて作業しています。

test.py
print("foo")
print("bar")
print("ふがふが")

VS Codeでtest.pyを開いた状態で、「Ctrl + Shift + B」(ビルドタスクの実行コマンド)を実行すると、タスクがないという警告メッセージが表示されます。
メッセージをクリックすると、テンプレートからタスクを作成するというメッセージが表示されるのでさらにクリックし、テンプレート種別から「Others」を選択するとタスク設定ファイル(tasks.json)が作成されます。
task01.png
task02.png
task03.png

tasks.jsonを以下のように編集し保存します。
ポイントは、commandに、settings.jsonで指定したPythonのパスを書くことです。

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "python build",
            "type": "shell",
            "command": "${config:python.pythonPath}",
            "args": ["${file}"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
  • ビルドする

「Ctrl + Shift + B」

task.jsonを保存したのち、test.pyを開いた状態で、「Ctrl + Shift + B」(ビルドタスクの実行コマンド)を実行すると、コンソールに実行結果が表示されます。
000241.png

  • デバッグする

「F5」

VS Codeでtest.pyを開いた状態で、「F5」(ビルドタスクの実行コマンド)を実行するとデバッグモードで実行されます。
ブレークポイントを置くと、黄色くハイライトされ、ステップ実行が可能になります。
000242.png

はまったところ

  • condaのエラーがでる。

Python Extentionの最新(2020.1) を使っていたのに、PythonExtention 2019.12版を使うとcondaが見つからないエラーが出るので2020.1を使おうという問題が発生した。Python Extentionを2020.1.57204から2020.1.58038に更新したら消えたけどこれでいいのかな?

参考リンク

公式:VS CodeでPython
公式:環境変数の設定

manamana
私が書く内容はすべて個人的な見解で所属組織を代表するものではありません。 気をつけて書いてるけど間違ってる可能性は多大にあるので自己責任で使ってください。 って書いとけって言われた。
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
コメント
(編集済み)

初歩的な質問ですみません、
tasks.jsonを丸写しすると、次のビルドの工程で
「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」
と表示されてしまいます。

・ポイントは、commandに、settings.jsonで指定したPythonのパスを書くことです
とありますが、
"command": "${config:python.pythonPath}",
ではなく
"command": "${config:C:\Users\XXXX\Anaconda3\envs\py37\python.exe}",
とするのでしょうか...?

また、python.pythonpathには一つのパスしか入りませんが、
仮想環境を複数用意したときには、仮想環境を変更するときにpython.pythonpathを書き直す必要がありますか?

あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした
;