VScodeでAnaconda仮想環境の実行とデバッグを行う時のチェックポイント

PyCharmや、JupyterNotebookでコードを書くことが多かったが、やはりエディタを1つに統一したい欲があり、VScodeに移行する事に。

  初め、Import Errorが頻出して非常に手間取ったので、備忘録的に対応内容を記載しておく。

手こずったのはそもそもエディタの設定に対する理解がザルだったのが大きいので、当たり前だろ!という事も書いてあると思います。笑

今回色んな記事をググって時間を浪費してしまったが、恐らく以下の対応は全て行えていれば問題ないはずです。

自分の場合は、これでちゃんと動くなるようになりましたというリストなので、もしかしたら過剰な設定内容も含まれているかもしれません!

 

バージョン

VScode April 2020 (version 1.45)

Anaconda 2020.02-Windows-x86_64

記事内の仮想環境名 zero_to_deep_2

公式ドキュメント

Using Python Environments in Visual Studio Code

①ターミナル上で仮想環境に切り替えているか?

まず前提として、VScode内では①実行環境と②実行用のPythonの参照先③デバッグ用のPythonの参照先の3つを設定する必要がある。 実行環境は今回仮想環境と想定しているので、VScode内のターミナルで以下のコマンドを入力して、あらかじめ仮想環境に入っておく。

activate your_env_name

f:id:osapii:20200610091749p:plain

この時、VScodeの統合ターミナル内で、正しく仮想環境に切り替えできているか確認する。(画像赤線の部分)

②Pythonの実行環境のPathが通っているか?

続いて、実行環境のPathを通していく。設定から行っていく。(CTRL + , ) ここに今回使用したい仮想環境のPythonPathを記述する。これで実行時に該当のPathのPythonをVScodeが参照してくれる。 f:id:osapii:20200610092229p:plain

後は、condaPathにAnacondaのパスを設定する箇所もある。こちらも、必要かどうか分からなかったが一応設定しておいた。 f:id:osapii:20200610092502p:plain

ここで重要なポイントとして、設定はワークスペース設定の方に記述するという事。VScodeの設定内容の優先度は、 ○○.json > ワークスペース設定 > ユーザー設定 となっている。

実際、UIからワークスペース設定を変更すると、setting.jsonが更新される仕組みになっている。

別の仮想環境で実行したいよ~という場合は、別のワークスペースを新規に設定してpythonPathを設定する必要があると思われる。 f:id:osapii:20200610092922p:plain

ちなみに、Python拡張機能を導入するとエディタ下部のバーから実行環境を変更できるが、これは正に、ワークスペース設定のpythonPathを変更している。なので、実際はパスを調べて入力しなくても、バーから任意の仮想環境を選択する事で事足りるはず。 f:id:osapii:20200610093358p:plain

↑①と②が正しく済んでいれば、Pythonファイルの実行が通るのではないか?と思う。ちなみに、この状態だとデバッグは動かない。

③Pythonのデバッグ環境のPathが通っているか?

最初に書いたとおり、VScodeでは実行環境とデバッグ環境は扱いが異なる。デバッグ環境の設定はlaunch.jsonに記載していく。

ここでは、実行環境と同様にpythonPathを変更すればOK。②が済んでいれば、setting.jsonに正しいpythonPathが入っていると思うので、そいつをコピペしておく。

↓今、手元で動いているデバッグ設定を貼っておくとこんな感じです。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
             # ここにpythonのパスを書こう
            "pythonPath": "C:\\Users\\m_osa\\anaconda3\\envs\\zero_to_deep_2\\python.exe"
        }
    ]
}

これでデバッグ環境の設定が終わったので、F5でのデバッグも機能するようになる。はずだが、自分の場合はここでつまづいた。

f:id:osapii:20200610093957p:plain
やったー

④VScodeを起動してからAnacondaを読み込むまで十分に時間が経過しているか?

①~③まで完了したのに、なぜかImport Errorが発生。30分ほど設定変更と再起動を繰り返していましたmm

色々試してみると、最初の読み込みに時間がかかるようで、エディタの立ち上げ直後は実行もデバッグも正しく環境を参照してくれません。

大体1分程待つと、設定した内容で動作してくれます。結構忘れがちなポイントだと思うので気を付けて下さい。

おわり

環境構築に時間取られている時、悲しい気持ちになる( ;∀;)