tohnamanブログ

東村山に生息するWindows好きな太っちょオヤジプログラマのブログ

WindowsのVisual Studio CodeでPython!! その2

前回の続きです。

今回は Windows10 のVisual Studio Codeで

  • Lint が機能する

ようにします

Visual Studio Code の準備 の続き

Lint 設定

Visual Studio Codeの Python拡張は、Pylint、Pep8、Flake8に対応しています
Lint エラーになるソースを準備し確認します
以下の内容を bad-source.py で保存してください


import sys
import os

def main():
    x = 1
    pwd = os.getcwd()
    print(pwd)



if __name__ == '__main__':
    main()

Lint 設定 - Pylint

Pylintは、初期設定で有効になっているので、bad-source.py を保存すると、
問題タブの bad-source.py に

[pylint] 'W0612:Unused variable 'x'' (6, 5)

が表示され、Pylint が機能しています!
また、以下のコマンドを実行すると

pylint bad-source.py

以下のように詳細な結果が表示されます

No config file found, using default configuration
************* Module bad-source
C:  1, 0: Module name "bad-source" doesn't conform to snake_case naming style (invalid-name)
C:  1, 0: Missing module docstring (missing-docstring)
C:  5, 0: Missing function docstring (missing-docstring)
C:  6, 4: Variable name "x" doesn't conform to snake_case naming style (invalid-name)
W:  6, 4: Unused variable 'x' (unused-variable)
W:  2, 0: Unused import sys (unused-import)

------------------------------------------------------------------
Your code has been rated at 2.50/10 (previous run: 2.50/10, +0.00)

Lint 設定 - Flake8

Flake8は、初期設定で有効にではないので、
Visual Studio Codeのファイル -> 基本設定 -> 設定 を開き、
以下の設定値をユーザー設定に追加

"python.linting.flake8Enabled": true,
"python.linting.pylintEnabled": false,

すると、Linter flake8 is not installed. のエラーになります。
これは、Flake8 パッケージが無いからです
Pylint でエラーにならなかったのは、パッケージがあったからです。
パッケージの有無は、以下のコマンドで確認できます

conda list | Select-String pylint
conda list | Select-String flake8

pylintあり、flake8なし の結果になります

Lint 設定 - Flake8 - パッケージ追加

パッケージ管理は、Anaconda に内包されている conda で行うことにします。
Python標準のパッケージ管理システムは pip ですが、
以下の理由から conda で行うことにしました

  • Anaconda に組込み済みのパッケージは conda で管理しているらしい
  • conda はバイナリダウンロードなので、ビルドしなくていい
  • pip と conda は混ぜない方がよいらしい

ということで conda で Flake8 パッケージを追加する為に、
まず、以下のコマンドを実行します

anaconda search -t conda -p win-64 flake8

このコマンドで、以下を確認します

  • flake8 パッケージがあるか
  • Windows 64bit 環境用のモノがあるか
  • 動作環境のPython用のモノがあるか

先頭の anaconda/flake8 が、Windows 64bit、Python 3.6 に対応してそうなので、
以下のコマンドを実行し、インストールコマンドを取得します

anaconda show anaconda/flake8

最後にあるコマンドを実行します

conda install --channel https://conda.anaconda.org/anaconda flake8

途中 Proceed ([y]/n)? となるので y としました。
以下のコマンドでインストール確認を行います

conda list | Select-String flake8
flake8 --version

バージョンは以下のようになりました

3.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.6.4 on Windows

Lint 設定 - Flake8 - 有効化

Visual Studio Code は、Flake8 パッケージがインストールされたことを知らないので、
Visual Studio Codeのコマンドパレットを開き、
下記のコマンドでウィンドウの再読み込みを実行します

Reload Window

再読み込みが完了すると、問題タブの bad-source.py に以下のエラーが表示されます

[flake8] F401 'sys' imported but unused (2, 1)
[flake8] E302 expected 2 blank lines, found 1 (5, 1)
[flake8] F841 local variable 'x' is assigned to but never used (6, 5)
[flake8] E303 too many blank lines (3) (12, 1)

また、Pylint と同じようにコマンドからも実行できます

> flake8 bad-source.py
.\bad-source.py:2:1: F401 'sys' imported but unused
.\bad-source.py:5:1: E302 expected 2 blank lines, found 1
.\bad-source.py:6:5: F841 local variable 'x' is assigned to but never used
.\bad-source.py:12:1: E303 too many blank lines (3)

Lint 設定 - まとめ

Visual Studio Codeで Pylint、Flake8を設定できるようなりました。
Pep8 も似たような方法で設定できると思います。

これで、

  • Lint が機能する

ようになったので、今回はここまでとします。