読者です 読者をやめる 読者になる 読者になる

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

アラフィフプログラマーが数学と物理を基礎からやり直す

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

機械学習 tensorflow 人工知能

はじめに

これまで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)
エディタ:Visual Studio Code version 1.8.1 → 1.10.2(2017/03/12)

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}“」のままにしておきます。

先ず、ファイル→基本設定→ワークスペース設定を選択します。 「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」とならずにデバッグが出来るようになりました。

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

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

【追記 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

最後に

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

参照