1. ホーム
  2. visual-studio-code

[解決済み] vscodeのPythonブラックフォーマッタがフォーマットされない

2022-03-09 10:15:55

質問

を使おうとしています。 黒をフォーマッタとして Ubuntu 20.04 の VS Code 上で Python 用に自動保存をしようとすると、うまくいきません。

を選択しました。 blackPython>Formatting:Provider . 私はデフォルトのフォーマッタとしてprettierを使用しています。そのために.prettierignoreを追加し、無効にし、黒と干渉していないことを確認するためにアンインストールしています。また、カスタムパスを ./local/bin/black . ターミナルで実行すると動作するのですが。どうすれば動くようになるのでしょうか?

{
  editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "python.formatting.provider": "black",
  "python.formatting.blackArgs": [
    "-l 120"
  ],
  "editor.formatOnType": true,
  "python.formatting.blackPath": "./local/bin/black"
}

解決方法は?

必要な設定は、ほんの少しです。 設定 black フォーマッタとして をVS Code上で実行しました。ほぼ正解のようですが、相対パスで blackPath (ただし、VS Codeはパスが本当に正しくない場合、エラーを表示するはずです)。そこで、絶対パスに変更することをお勧めします。

以下は私の設定です。

// User Settings

"editor.defaultFormatter": null,
"editor.formatOnSave": false,  // enable per language
"[python]": {
    "editor.formatOnSave": true
},
"python.formatting.provider": "black",
"python.formatting.blackPath": "/usr/local/bin/black"

// Workspace Settings

"python.formatting.blackPath": "/absolute/path/to/venv/with/black",
"python.formatting.blackArgs": [
    "-l 120"
],

まずは editor.defaultFormatter の設定に戻す(あるいは、デフォルトの null ). すべてにデフォルトを設定するのではなく、フォーマッタに それぞれ 言語と 拡張子を指定します。ここでは、NULLで、次に設定します。 python -の設定(その後、JSとC++の設定用に分けています)。Prettierについて何か言っていましたが、それは黒を使用しているVS Codeと干渉している可能性があります。

次に、正しい設定を変更しているかどうかを確認します。VSコードでは 3つの設定 : ユーザー , ワークスペース および フォルダ . 私は通常 formatOnSave でPython用に有効化されています。 ユーザー の設定と provider に設定します。 black (システム全体にインストールされている black ). 特定のワークスペースでは、仮想環境を持っていて、その上で blackPathblack は、その仮想環境に特別にインストールされます。また、すべての設定を単に ユーザー の設定を使用するか、システム全体にインストールされた同じ black . しかし、ここでの要点は、両方とも絶対パスを使用することです(基本的には、出力されたものをコピーして which black をコンソールから取得します)。

を指定した場合は blackPath を使用して特定の仮想環境を指定する場合は、必ず その同じ仮想環境を選択する をワークスペースに追加してください。

最後に、Output タブ > Python から問題がないかを確認します。