以前簡単なPythonのスクリプトを書いていた時期があって、このときはIntelliJ Ultimateで開発を行っておりました。
IntelliJ UltimateはPHPやPythonである程度は型などを理解してくれてジャンプなどをしてくれるのですごい開発しやすいです。
ですが今回MicrosoftのVSCodeでPython環境を整えてみたのですが、WSLとVSCodeがかなりシームレンスに連携できることがわかり想像を絶する環境を構築することができました。
VSCodeで一部まだプレビュー用の拡張を使っておりますが、かなりよい環境だと思います。
また、今回はWSL上のPython、VSCodeは既にインストール済みとして進めます。 Windows Subsystem for Linux(WSL)を有効にしてUbuntuをインストールします。 Windows Subsystem for Linux(WSL)の有効化方法 Hyper ... 続きを見る
もしWSLをまだインストールしていない場合はWindows Subsystem for Linux (WSL)の設定とUbuntuのインストール方法をご参照ください。
Windows Subsystem for Linux (WSL)の設定とUbuntuのインストール方法
今回の目標
今回は以下を目標にしたいと思います。
- VSCodeからWSL上のPythonを実行できる
- 型を推論し補完できる(IntelliSense)
- VSCode上からテストを実行できる
VSCodeに必要な拡張をインストールする
Remote WSLをインストールする
今回はWSL上のPythonを操作するためVSCodeからWSLを操作するための拡張をインストールします。
インストールするのはRemote WSL
です。
詳しいインストール方法はVisual Studio CodeとWSLでPython開発に挑戦してみようがわかりやすいのでご参照いただけるとよいと思います。
この拡張をインストールすることでVSCodeとWSLを連携させることができます。
続いてWSLを起動します。
どこか適当なディレクトリに移動してcode .
と入力します。
お恥ずかしいことに全く知らなかったのですがcodeコマンドを実行することでVSCodeを起動できるようです。
今回の場合、カレントディレクトリをプロジェクトにしてVSCodeを起動することになります。
というわけでWSL上でコマンドを実行起動するとVSCodeが起動します。
時代遅れかもしれませんが、WSLからコマンドを実行するとWindowsのプログラムが起動するとは軽い衝撃を受けました。
Windows Vista時代を経験した人間としては、非常に感慨深いものがあります。
VSCodeの左下にWSL: Ubuntu-18.04
と表示されていれば正常に接続されています。
なおこの状態でVSCodeのターミナルを開いてみます。
ショートカットはCtrl + Shift + @
です。
VSCode上のターミナルでもPowerlineがしっかりと反映されていますね。これは嬉しい。 Python環境を整えるためにWSLを有効にしてUbuntuをインストールしました。 詳細はWindows Subsystem for Linux (WSL)の設定とUbuntuのインストール方法をご ... 続きを見る
WSL上でターミナル環境をPowerlineに対応させる手順はWindows TerminalでWSL Ubuntuの環境を整えるをご参照ください。
Windows TerminalでWSL Ubuntuの環境を整える
この状態でVSCodeでPythonのファイルを開いて、適当にインポート文を書いてみます。
こんな感じでシンタックスハイライトはされているのですが、補完は非常に弱いというかクラス名やパッケージ名(語弊があります)の候補が表示されていません。
(マウス操作が雑ですみません)
個人的にはPerlのスクリプトをメモ帳で修正させられたことがある経験から、シンタックスハイライトがある時点でかなりありがたいのですが2020年ではもう少しインテリ感があると大変良いです。
続いてVSCodeにPythonの拡張をインストールします。
Python拡張をインストールする
拡張の検索画面でPython
と検索するかVSCodeでPythonのファイルを開くと右下に表示させるバルーンをクリックしてもよいと思います。
Install on WSL: Ubuntu: 18.04
となっていることを確認してクリックしてください。
インストールが完了するのでReload Required
をクリックしてリロードしてください。
しっかりとPythonが認識されています。
この状態で拡張をインストールする前のインポート文を書いてみます。
パッケージ名(語弊あります)とクラス名がしっかりと補完されていますね。
(マウス操作がさらに雑ですみません)
VSCodeがさらにインテリ感あふれるIDEになりました。
VSCodeからPythonのテストを実行する
ここまででも十分実用に耐えうるのですがEclipseやIntelliJだとIDEからxUnit系のテストが実行できますよね。
そしてIDEから実行すると多くの場合、メソッド単位で実行したりクラス単位で実行できたりします。
もちろんコマンドからも実行できるのですがIDEから実行できれば更に便利になります。
お恥ずかしいことにPython自体に疎いのでテスティングフレームワークは何か業界標準なのかわかりませんので、今回はPython標準のunitetestを使っております。
VSCodeの設定でunitetestを有効にする
基本的にはPython testing in Visual Studio Codeの通りに進めます。
現在テストクラスが含まれるファイルを開くと以下のようになります。
先程のページを見るとVSCodeでPythonのテストを実行する場合は、使用するテスティングフレームワークごとに有効設定できるとあります。
ページではJSONの記述だったのですがVSCodeの設定から検索でunittestEnabled
と検索すると、まさにその名の通りのUnittest Enabledという項目があるのでチェックを入れて有効にします。
ポイント
今回はunittestを使いましたが、pytest、nosetestに対応しているみたいです。
Run Test
と表示されています。クリックするとテストが実行されます。
ちなみに、テストを失敗させると・・・
失敗したことがわかりやすいですね。
なお失敗理由というかテスト時の出力も確認できるようです。
InteliJだとテキスト系の失敗の場合は差分表示できるのですがVSCodeではできるかわかりませんが、この状態でも問題ないですね。
今後はクラスとテストクラスの相互移動ができるかなど、使い勝手をより向上できるか調査したいと思います。
まとめ
今回は、VSCodeでWSLのPythonを実行する環境を構築しました。
普段はIntelliJを使うことが多いのでVSCodeをあんまり使ったことがないのですが素晴らしいですね。
本当にいい意味で裏切ってくれました。
特にVSCodeはオープンでありながらもMicrosoftが関わっているので、これが大きいでしょうね。
Windows Vistaを経験している世代としては本当に考えられないです。
今後の発展にもさらに期待したいです。