デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理と英語を基礎からやり直す。https://qiita.com/yaju

Visual Studio CodeをPythonの開発環境として使ってみる

はじめに

これまでPythonを使用するのに「Jupyter Notebook」を使用してきたのですが、簡単な確認ならこれで十分なんですが本格的に開発するとなるとブレークポイントを使ったデバッグが出来ないと自分には辛いということで、Python開発環境を整えることにしました。

候補として以前使用したことがあるPython統合開発環境(IDE)「PyCharm (パイチャーム)」とマイクロソフト発のクロスプラットフォームテキストエディターである「Visual Studio Code」があります。
今回は、話題になっている「Visual Studio Code」を使用してみます。

ちなみに、PyCharm (パイチャーム)については下記サイトを参考にするといいでしょう。

qiita.com

環境

OS:Windows10 Home(64bit)
Python:Python 3.5.2 :: Anaconda 4.2.0.0 (64bit) → 5.0.1(2017/11/25)
エディタ:Visual Studio Code version 1.8.1 → 1.10.2(2017/03/12) → 1.19.1(2018/01/01)

Visual Studio Codeのインストール

Windows版をダウンロードして、実行します。 code.visualstudio.com

Python実行環境を整える

下記サイトを見ながらデバッグ出来る環境まで整えます。 renga.hatenadiary.com

先にAnacondaにてTensorflow用のテスト環境として専用の環境「tensorenv2」を作ってTensorFlowをインストールしました。

(C:\Anaconda3) C:\Users\(ユーザー)> conda create --name=tensorenv2 python=3.5」
(C:\Anaconda3) C:\Users\(ユーザー)> activate tensorenv2
(tensorenv2) C:\Users\(ユーザー)>pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0rc1-cp35-cp35m-win_amd64.whl

ところが「print("test")」といった実行は出来たのです、4つの問題が発生しました。

デバッグブレークポイントが止まらない

本来なら先頭に黄色マークが出て処理が止まるはずなのですが、止まりません。ブレークポイントをセットしてもそのまま実行されてしまいます。
この理由が全然分からなくて、「launch.json」を削除してやり直したり、「Python拡張機能をアンインストールしてから再度インストールもしてみたのですが、結果が変わらない。
指定したフォルダが「C:\Anaconda3\envs\tensorenv2\test」だったので、試しに「C:\DEV」としてフォルダの場所を変更してみたところ先頭に黄色マークが出てデバッグが出来るようになりました。
フォルダ階層が深いとダメなのかも知れませんね。 f:id:Yaju3D:20161231224452p:plain

デバッグ実行でimport Errorが発生する

「test2.py」として下記ソースコードを作成しましたが、先頭行で「tensorflow」がimport Errorとなります。

import tensorflow as tf

def x2_plus_b(x, b):
    _x = tf.constant(x)
    _b = tf.constant(b)
    result = tf.square(_x)
    result = tf.add(result, _b)
    return result

with tf.Session() as sess:
    result = sess.run([x2_plus_b(2., 3.)])
    print(result) 

静岡Developers勉強会仲間である@uroshika_yの下記のブログ記事が解決の糸口となりました。 uroshika.blogspot.jp

これはTensorflow用のテスト環境(tensorenv2)にしかtensorflowがインストールされてないからです。
なので、Pythonの実行環境の場所を変更する必要があります。
参考にしたサイトでは「launch.json」内の「pythonPath」の設定値を変更するように書かれていますが、ここは「"${config.python.pythonPath}"」のままにしておきます。

先ず、ファイル→基本設定→ワークスペース設定を選択します。ユーザー設定とワークスペース設定の2つありますが、今回はワークスペース設定にします。 「Python Configration」内の「"python.pythonPath": "python",」のペンアイコンをクリックで設定コピーして、PythonPathの場所を書き換えます。 f:id:Yaju3D:20161231231501p:plain

tensorenv2環境内に「python.exe」があるので絶対パスを指定します。この際に"\"(バックスラッシュ)は"/"(スラッシュ)に書き換えます。

// 既定の設定とユーザー設定を上書きするには、このファイル内に設定を挿入します
{
    "python.pythonPath": "C:/Anaconda3/envs/tensorenv2/python.exe"
}

ワークスペース設定なので、「C:\DEV\.vscode」フォルダ内に「settings.json」が作成されます。
f:id:Yaju3D:20161231232217p:plain

これにより、「import Error」とならずにデバッグが出来るようになりました。

【追記 2018/01/01】
ユーザー設定にした場合の保存場所は「%APPDATA%\Code\User」フォルダ内に作成されます。
Visual Studio Codeの設定「虎の巻」:IDE編

スクランナーの実行でimport Errorが発生する

「Ctrl」+「Shift」+「B」のショートカットで「test2.py」が実行することが出来るのですが、「import Error」となってしまいます。
どうもデバッグとは設定が別のようなので変更する必要があります。 「tasks.json」内の「"command": "pyhon",」を「launch.json」内の「pythonPath」の設定値と同じにするため下記に変更します。

【追記 2018/01/01】
久しぶりにVSCodeを動かしバージョンアップ(1.19.1)したら、エラーが出るようになったので今回修正しました。
"label"プロパティや"type"プロパティなどが必要になりました。また、ShellはPowerShellになりました。あと、出力ウィンドウの日本語が文字化けも設定が無くても出なくなりました。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Python",
            "command": "${config:python.pythonPath}",
            "type": "shell",
            "args": [
                "${file}"
            ],
            "presentation": {
                "reveal": "always",
                "panel": "shared"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

以下は以前のバージョン用です。一応、残しておきます。
【追記 2017/03/12】
出力ウィンドウで日本語が文字化けする問題の対応で、「options」属性を追加しました。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "${config.python.pythonPath}",
    "isShellCommand": true,
    "args": ["${file}"],
    "showOutput": "always",
    "options": {
        "env": {
            "PYTHONIOENCODING": "UTF-8"
        }
    }
}

「Ctrl」+「Shift」+「B」のショートカットで結果「[7.0]」が求まりました。
f:id:Yaju3D:20161231234049p:plain

「出力」での文字化け

print("あいう")として「Ctrl」+「Shift」+「B」のショートカットで実行した場合、「出力」で文字化けしてしまいます。どうもVisual Studio Codeのバグのようです。
デバッグ コンソール」では正常に表示されるので、とりあえずはいいかな。 teratail.com

【追記 2017/03/12】「tasks.json」内で「options」属性を追加することで文字化けは解決しました。 segmentfault.com

【追記 2018/01/01】「tasks.json」で未設定でも文字化けしなくなりました。

最後に

これで最低限のPythonの開発環境が整いました。
あとはLintなど警告エラーなどをどうしていくのか考えていきます。

参照

スポンサーリンク