目次
この記事を読むと何ができる?
- Windows10 + Anaconda環境 + Python 3系 を扱っているユーザーが
- 別のエディタ(Spyder等)で使っていた Anaconda環境を崩さず に
- Spyderでの 使用感をある程度維持 しつつ
- 無理なくVSCodeに移行 できる
- そしてSpyderには無かった 様々な便利機能を使える ようになる
上記がスムーズに進むように記事リンクを並べています。
おことわり
- あくまで参考にした記事リンクを備忘録的にまとめただけなので、新規情報はほぼありません。
- この記事の順にリンク先を読んでいけば良いので、ネットの海に飛び込むよりは効率的かと思います。
- 執筆者の環境は以下の通りです
- Windows 10 Pro
- conda 4.11.0
- Python 3.9.7
- Spyder 5.1.5
- VSCode 1.69.0
なぜわざわざSpyderからVSCodeに移行するのか?
Spyderの利点
- IPythonコンソール
- 変数エクスプローラー
- プロットペイン
- 入力補間・構文解析
これらの機能は非常に強力で、私も以前はSpyderを愛用していました。これ以外にも、AnacondaをインストールしてSpyderを起動した時点でnumpyなど主要ライブラリのパスまで通っているので、環境構築で躓きにくいのは大きなポイントです。総じて
- Pythonに特化した便利な機能を
- 少ない労力・学習コストですぐに扱うことができる
のがSpyderの利点だと感じています。
VSCodeの利点
一方でVSCodeは汎用的なエディタなので、Pythonを便利に扱うには多少の労力をかけて環境構築する必要があります。ただし一度環境構築してしまえば、上記で挙げたSpyderの利点は VSCodeでもほぼ同じように実現 できます。
その上で、Spyderに無い利点としてぱっと思いつくのは
- 軽量
- 豊富な拡張機能
- Python以外の言語とエディタの使用感を統一できる
- Gitとのシームレスな連携(Spyderも "Projects" という機能でGitと連携できるようですが、コマンド操作のみ)
あたりでしょうか。
そして何より、今流行りのエディタなので とにかく情報が豊富 です。日本語で書かれた記事が多く、調べる時に困りません。
Python実行環境の整備
まず大前提として、VSCodeでPythonが使える環境を整備します。この記事は Windows10 + Anaconda3 + Spyder を使っていたユーザーの乗り換えを想定するので、Anacondaのインストールや仮想環境の構築などは済んでいるものとして話を進めます。
VSCodeの完全アンインストール
リンク : https://kazupon.org/VSCode-how-to-completely-uninstalll/
クリーンインストールしたい方は上記リンクの通りに操作してください。
VSCodeのインストールからPython実行環境の整備まで
リンク : https://python0to1.com/499/
基本的には上記のリンクの通りで良いのですが、python.pythonpath
の追加に加えて、 python.condapath
と入力して C:\Users\????\Anaconda3\Scripts
も追加してください。
これを追加するとAnaconda Navigatorを経由せずにVSCodeを直接開いても、毎回自動で仮想環境のactivateまで済ませてくれるっぽいです。せっかく軽量なVSCodeを使うのに、起動時にAnaconda Navigatorを毎回経由していたら本末転倒なので必ず設定しておきましょう。(参考 : https://qiita.com/manamana/items/38e963ce04f24de4bbe4 )
Spyderの使用感の再現
ここまででPythonが最低限実行できるようになったので、早速Spyderに寄せていきます。
IPythonコンソール
Spyderでは、エディタで書いたコードを F5
キーなどで実行した場合、実行結果は右下のIPythonコンソールに出力されます。
VSCodeのデフォルトでは右上の実行ボタンをクリックすると画面下側にターミナル等のパネルが開きます。実行結果はこのターミナルに出力されるのですが、IPythonのような補間機能は一切無いためこのままでは不便です。
ですが、VSCodeでもJupyterの拡張機能を導入すれば、.py
ファイルをSpyderのIPythonコンソールに近い使用感で実行することが可能です。「なぜ .ipynb
でもないのにJupyter?」という疑問への回答はこちらの記事に大変分かりやすくまとまっています。(参考リンク : https://qiita.com/386jp/items/f023de9457c99b964a85 )
導入は非常に簡単で、VSCodeの拡張機能タブで jupyter
と入力し、"Jupyter" と "Jupyter Notebook Renderers" をインストールするだけです。("Jupyter Notebook Renderers" はこの後の画像プロットを正常に表示するために必須です。)
ちなみにAnacondaのbase環境にはデフォルトでJupyterがインストールされているため、巷の紹介記事で書かれている「Jupyterパッケージのインストール」は不要です。
.py
ファイルの1行目に # %%
を加えて、エディタ上で Ctrl
+ Enter
または Shift
+ Enter
を打つと、隣にIPythonウィンドウが開きます。(この実行方法を使うのであれば下のコンソールパネルは不要なので、Ctrl
+ @
で閉じてしまえば良いです。)
IPythonコンソールが右画面を全て占有してしまうのは少し残念ですが、ある程度Spyderに近い感覚で扱えるのではないでしょうか。IPythonに直接入力しての実行も問題ありません。
変数エクスプローラー
Spyderの便利機能の筆頭ですが、これもVSCode上で使えます。
IPython画面の最上部にある、Variablesをクリックすると下側に新しく"JUPYTER VARIABLES"パネルが開き、変数エクスプローラーが表示されます。
各変数の表示の左端にあるボタンをクリックすると、変数の詳細が新規タブで表示されます。Spyderのように値の大小に対応した色分けがないのは残念ですが、こちらではフィルタ機能を使えるのが嬉しいです。
プロットペイン
Spyderでは生成したプロットのみが並ぶ「プロットペイン」が用意されています。
このプロットペインがあるため、Spyderのデフォルト設定ではIPythonコンソールでのインラインプロットがミュートされており、コンソールにはプロットが表示されないようになっています。
(プロットペインの設定から"インラインプロットをミュートする"のチェックを外すと、IPythonコンソールでもインラインプロットが表示されるようになります。)
VSCodeのJupyterも基本はIPythonの発展版なので、インラインプロットに関してはSpyderとほぼ同じような表示になります。また、プロットにカーソルを合わせると3つのボタンが表示され、左から"copy to clipboard", "Expand image", "Save As"の機能を使うことができます。
1つ目の"copy to clipboard"では、選択しているプロットを.png形式でクリップボードにコピーすることができます。.png形式なのでパワポ等にコピペした時に使い勝手が良いです。
2つ目の"Expand image"のボタンを押すと、新しくプロットタブが開いて画像の拡大などを行うことができ、Spyderのプロットペインに近い操作が可能です。
Spyderのプロットペインでは 「実行時に生成された全てのプロット」 が 「生成された順番に」 並んでいきますが、VSCodeのプロットタブでは 「"Expand image"ボタンを押したプロットのみ」 が 「ボタンを押した順番に」 並んでいきます。このあたりの挙動の違いに最初は戸惑うかもしれませんが、すぐに慣れる程度の違いでしょう。
3つ目の"Save As"は文字通り、選択したプロットに名前を付けて保存する機能です。
総じて、Spyderのプロットペインと完全に同じというわけにはいきませんが、ほぼ同じような使用感を実現できます。
入力補間・構文解析
Spyderではデフォルトで入力補間や静的構文解析が行われるようになっていますが、VSCodeでも拡張機能で同じことができます。
リンク:https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16
リンク:https://qiita.com/simonritchie/items/870be09620b9df652bf6
とりあえず上記の通りにPylanceとAutoDocstringを入れれば問題ありません。
ここまでで、Spyderの主要な機能はほぼ再現できました。
VSCodeならではの機能
ここからはVSCodeだからこそできる機能を追加していきます。「○○な機能を使いたい」「○○が無くて不便だ」と感じた時に、少し調べるだけで何かしらの解決策が見つかる のが流行りものの最大の長所です。
まずは(既に紹介済みのものも混ざっていますが)下記を参考に。
リンク:https://yurupro.cloud/767/#toc3
特におすすめなのは
- indent-rainbow
- Material Icon Theme
- Python Indent
- Python Docstring Generator
- Pylance
あたりです。
なお、上記リンク先で紹介されているTrailing Spaceに関しては、VSCodeのデフォルト機能として用意されているので拡張機能を入れる必要はありません。
リンク:https://qiita.com/n_oshiumi/items/1ad3f55d58f2d9d48d1e
Git連携
リンク:https://miya-system-works.com/blog/detail/vscode-github/
これでコマンドライン操作はできるのですが、せっかくVSCodeを使っているので、GUI的な操作も追加して気軽にバージョン管理できるようにしておきたいところです。おすすめはGit HistoryかGit Graphです。
リンク:https://zenn.dev/gunners6518/scraps/907746ae17f9e9
規約チェック
Pythonのコーディング規約PEP8に沿ったプログラミングを無理なくできるようになります。
リンク:https://qiita.com/firedfly/items/00c34018581c6cec9b84
(上記リンクでは pip install
を使っていますが、我々はAnacondaユーザーなので conda install
を使ってください。念のため。)
また、厳密には規約チェックとは異なりますが、 import文の順番を自動で正しく並び替えてくれるライブラリ "isort" も有効化しておくことをおすすめします。以下の記事では pip install
を使っていますが、Anacondaならbase環境にデフォルトでインストールされているようです。
リンク:https://zenn.dev/wtkn25/articles/python-isort
codic
日本語を入力すると"プログラミングっぽい"英単語に変換してくれます。変数名を考えやすくなります。
リンク:https://qiita.com/collapsar/items/49df3edca91089bcc08f
かっこの色分け
昨年から拡張機能なしでもできるようになりました。
リンク:https://qiita.com/kazuma_f/items/0828e5a5121925b7289a
相対パスのコピー
VSCodeのエクスプローラーのパネルから相対パスをコピーする時のひと手間が減ります。
リンク:https://tonari-it.com/windows-vscode-copy-relative-path/
まとめ
- VSCodeでも環境構築に多少の労力をかければSpyderとほぼ同じ機能を実現できる。
- VSCodeなら様々な便利機能を少し調べるだけで簡単に追加できる。
終わりです。