VSCodeのflake8とyapfが動いてくれない

投稿者: Anonymous

vscode上でflake8とyapfが動いてくれません。
現在はユーザーセッティングの方に設定を書いていて、ワークスペースの設定のほうに書いても動作してくれませんでした。
環境は以下のとおりです。

  • Windows 10 Home 1803 17134.286
    • VSCode 1.27.2
    • Python 3.5.1
    • flake8 3.5.0
    • yapf 0.24.0

下記のコードで試してみましたが、だめでした。
設定の画像を貼りますので、ここが間違っていて、こうすると動くよというのがあれば教えていただければ幸いです。
よろしくおねがいします。

print('test')

vscode_python


解決しました。
pycodestyleのバージョンが新しいとflake8が追従しきれなくて依存性に問題が出るそうです。
そこで、flake8のバージョンを上げるか、pycodestyleのバージョンを下げると問題が解決します。
私の場合、flake8の更新が来ていたので、更新したところ、無事に動くようになりました。

解決

  • 可能性1: ファイルが Python モードで開かれていないのかもしれません。よくありそうなのは言語モードが「プレーンテキスト」になっている場合です。標準ではウィンドウ右下に表示されていますので、拡張子 .py のファイルとして保存するなどして言語モードを Python にしてください。

    VS Code のウィンドウ右下のツールバー最右に「プレーンテキスト」と書かれています。言語モードの表示です。

  • 可能性2: そもそも flake8 や yapf に適合したコードになっていて、何も通知が出ないのかもしれません。明らかにエラーが出る例を渡した方が分かりやすそうです。たとえばインデント幅が 4 の倍数になっていない以下のコードは flake8 が E111 “indentation is not a multiple of four” を出します。また yapf はこのコードのインデント幅を 4 にします。

    if True:
     pass
    
  • 可能性3: flake8 や yapf が VSCode 側から見つかっていないのかもしれません。python.linting.flake8Pathpython.formatting.yapfPath をご確認ください。

  • 可能性4: flake8 3.5.0 において、flake8 が依存している pycodestyle と依存性の問題があるようです。2018 年 9 月現在 flake8 は pycodestyle >=2.4.0 と互換していません。これは flake8 がアップデートに追従しきれていないことが原因です。このため、新しいバージョンの pycodestyle をダウングレードする必要があります。まず、今インストールされている pycodestyle のバージョンを確認します。

    pip show pycodestyle
    

    pycodestyle のバージョンが新しすぎれば、一度アンインストールして再度バージョン指定してインストールします (おそらく後者を行うだけで大丈夫ですが、念の為アンインストールの手順も入れてあります)。

    pip uninstall pycodestyle
    pip install "pycodestyle<2.4.0"
    
回答者: Anonymous

Leave a Reply

Your email address will not be published.