VS CodeでのPythonのフォーマット
フォーマットは、ソースコードを人間が読みやすくするために行われます。行間、インデント、演算子の周囲のスペースなどの特定のルールと規則を適用することで、コードは視覚的により整理され、理解しやすくなります。autopep8 ページで例を見ることができます。フォーマットはコード自体の機能には影響しないことに注意してください。
Linting (リンティング) は、一般的な構文、スタイル、機能のエラー、および型にはまらないプログラミング手法についてコードを分析することで、エラーを防止するのに役立ちます。フォーマットとリンティングには多少の重複がありますが、これら2つの機能は補完的なものです。
フォーマッターの選択
お好みのフォーマッター拡張機能を VS Code Marketplace で検索してください。
Microsoft は以下のフォーマット拡張機能を公開しています
フォーマッター | 拡張機能 |
---|---|
autopep8 | https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8 |
Black フォーマッター | https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter |
コミュニティが提供するフォーマッター拡張機能
フォーマッター | 拡張機能 |
---|---|
Ruff | https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff |
yapf | https://marketplace.visualstudio.com/items?itemName=eeyore.yapf |
さらに、以下はインポートのソートをサポートするフォーマッター拡張機能です
フォーマッター | 拡張機能 |
---|---|
Ruff | https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff |
isort | https://marketplace.visualstudio.com/items?itemName=ms-python.isort |
注: 上記の表または Marketplace でお好みのフォーマッターが見つからない場合は、拡張機能を通じてサポートを追加できます。Python 拡張機能テンプレート を使用して、新しい Python ツールを VS Code に統合できます。
既定のフォーマッターを設定する
フォーマッター拡張機能をインストールしたら、以下の手順に従って VS Code で Python ファイルの既定のフォーマッターとして選択できます
- VS Code で Python ファイルを開きます。
- エディターを右クリックしてコンテキストメニューを表示します。
- Format Document With... を選択します。
- ドロップダウンメニューから Configure Default Formatter... を選択します。
- リストからお好みのフォーマッター拡張機能を選択します。
あるいは、ユーザー settings.json
ファイルの [python]
スコープの下に "editor.defaultFormatter"
を設定することで、すべての Python ファイルの既定のフォーマッターとして設定できます。Preferences: Open User Settings (JSON) コマンドを使用して settings.json
を開くことができます。
たとえば、Black Formatter を既定のフォーマッターとして設定するには、ユーザー settings.json
ファイルに以下の設定を追加します
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
フォーマッター拡張機能をインポートソーターとして設定するには、ユーザー settings.json
ファイルまたはワークスペース settings.json
ファイルの [python]
スコープの下に "editor.codeActionsOnSave"
で設定できます。これらの settings.json
ファイルは、それぞれ Preferences: Open User Settings (JSON) および Preferences: Open Workspace Settings (JSON) コマンドを使用して開くことができます。これにより、すべての Python ファイルで保存時のインポートのソートが有効になります。
たとえば、Ruff をお好みのインポートソーターとして設定するには、ユーザー settings.json
またはワークスペース settings.json
ファイルに以下の設定を追加できます
{
"[python]": {
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit"
}
}
}
コードのフォーマット
コードをフォーマットするには、エディターを右クリックして Format Document を選択するか、キーボードショートカットの ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) を使用します。
コードの保存時にフォーマットを有効にするには、ユーザー settings.json
ファイルに以下の設定を追加することもできます
"[python]": {
"editor.formatOnSave": true
}
一般的なフォーマット設定
サポートされている設定の詳細については、各フォーマッター拡張機能の README を参照してください。以下の設定は、ほとんどのフォーマッター拡張機能でサポートされています
設定サフィックス |
既定値 | 説明 |
---|---|---|
args | [] |
フォーマッターに渡される引数。各引数は、配列内で個別の文字列として渡す必要があります。 例 black-formatter.args: ["--line-length", "100"] |
importStrategy | useBundled |
useBundled に設定すると、拡張機能は同梱されているツールのバージョンを使用します。fromEnvironment に設定すると、最初に選択した Python 環境から読み込もうとしますが、読み込めない場合は同梱されているバージョンにフォールバックします。 |
path | "" |
フォーマットに使用するフォーマッターバイナリへのパス。注: このオプションを使用すると、フォーマットが遅くなる場合があります。 |
interpreter | [] |
Python 実行可能ファイルへのパスに設定すると、拡張機能はそれを使用してフォーマッターサーバーとそのサブプロセスを起動します。 |
showNotifications | off |
拡張機能によって通知が表示されるタイミングを制御します。サポートされている値は off 、always 、onError 、onWarning です。 |
フォーマットのトラブルシューティング
フォーマットが失敗した場合は、以下の原因を確認してください
問題 | 解決策 |
---|---|
Python ファイルに複数のフォーマッターが利用可能です。 | 上記のセクションの指示に従って、既定のフォーマッターを設定します。 |
"Format Document With..." オプションが利用できません。 | このオプションがコンテキストメニューに表示されない場合、VS Code にフォーマッター拡張機能がインストールされていないか、有効になっていない可能性があります。フォーマッターの選択 セクションを参照して、Python フォーマッター拡張機能をインストールする方法を確認してください。 |
フォーマッターのカスタム引数が正しくありません。 | 適切な <formatter>.path 設定に引数が含まれていないこと、および <formatter>.args に個々のトップレベル引数要素のリストが含まれていることを確認してください。 |
「非推奨のリンティングまたはフォーマット設定があります」という通知が表示されます。 | この通知が表示されている場合、VS Code に python.linting や python.formatting などの設定があることを意味します。これらの設定は、リンティングとフォーマットのサポートがツール拡張機能に移行されたため、Python 拡張機能ではサポートされなくなりました。 |
Black Formatter を使用すると、Format Selection コマンドが失敗します。 | black はコードの一部をフォーマットすることをサポートしていません。この制限を回避するには、貼り付け時のフォーマットを無効にし、formatOnSave を以下の設定でファイル全体をフォーマットするように設定できます: "[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"} 。 |
フォーマッター拡張機能をインストールしているのに、フォーマットが機能しません。 | フォーマットは、コードの構文の問題、サポートされていない Python バージョンの使用、フォーマッターが正しく構成されていないなど、さまざまな理由で失敗する可能性があります。フォーマッターが失敗した理由を理解するには、フォーマッター拡張機能の出力チャンネルを確認してください (コマンドパレットで Output: Focus on Output コマンドを実行し、フォーマッター拡張機能チャンネルを選択してください)。 |
注: 上記にお好みのフォーマッターが見つからない場合は、拡張機能を通じてサポートを追加できます。Python 拡張機能テンプレート を使用すると、新しい Python ツールを VS Code に簡単に統合できます。
次のステップ
- デバッグ - Pythonをローカルおよびリモートでデバッグする方法を学びます。
- テスト - テスト環境を構成し、テストを発見、実行、デバッグします。
- 基本的な編集 - 強力な VS Code エディターについて学習します。
- コード ナビゲーション - ソースコード内をすばやく移動します。
- Python 拡張機能テンプレート - お気に入りのリンターを VS Code に統合する拡張機能を作成します。