VS Code での Python のフォーマット
フォーマットを行うと、ソースコードが人間にとって読みやすくなります。行間、インデント、演算子の周りのスペースなどの特定のルールや規則を適用することで、コードは視覚的により整理され、理解しやすくなります。例は autopep8 のページで確認できます。フォーマットはコード自体の機能には影響しないことに注意してください。
リンティングは、一般的な構文、スタイル、機能上のエラーや、型破りなプログラミング慣行を分析することで、エラーを防ぐのに役立ちます。フォーマットとリンティングには少し重複する部分がありますが、この2つの機能は補完的です。
フォーマッタを選択する
VS Code Marketplace でお好みのフォーマッタ拡張機能を検索してください。
Microsoft は以下のフォーマッタ拡張機能を公開しています
フォーマッタ | 拡張機能 |
---|---|
autopep8 | https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8 |
Black Formatter | 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 |
さらに、以下は import の並べ替えをサポートするフォーマッタ拡張機能です
フォーマッタ | 拡張機能 |
---|---|
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 ファイルを開きます。
- エディターを右クリックしてコンテキストメニューを表示します。
- [ドキュメントのフォーマット]... を選択します。
- ドロップダウン メニューから [既定のフォーマッタの構成]... を選択します。
- リストからお好みのフォーマッタ拡張機能を選択します。
または、ユーザー settings.json
ファイルの [python]
スコープの下で "editor.defaultFormatter"
を設定することで、すべての Python ファイルの既定のフォーマッタとして設定することもできます。settings.json
は [基本設定: ユーザー設定を開く (JSON)] コマンドで開くことができます。
たとえば、Black Formatter を既定のフォーマッタとして設定するには、ユーザー settings.json
ファイルに次の設定を追加します
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
フォーマッタ拡張機能を import ソーターとして設定するには、ユーザー settings.json
ファイルまたはワークスペース settings.json
ファイルの [python]
スコープの下にある "editor.codeActionsOnSave"
で設定を行うことができます。これらの settings.json
ファイルは、それぞれ [基本設定: ユーザー設定を開く (JSON)] と [基本設定: ワークスペースの設定を開く (JSON)] コマンドを使用して開くことができます。これにより、すべての Python ファイルで保存時の import の並べ替えが有効になります。
たとえば、Ruff をお好みの import ソーターとして設定するには、ユーザー settings.json
またはワークスペース settings.json
ファイルに次の設定を追加できます
{
"[python]": {
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit"
}
}
}
コードをフォーマットする
コードをフォーマットするには、エディターを右クリックして [ドキュメントのフォーマット] を選択するか、⇧⌥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 ファイルには複数のフォーマッタが利用可能です。 | 上記のセクションの説明に従って、既定のフォーマッタを設定します。 |
「ドキュメントのフォーマット...」オプションがありません。 | コンテキスト メニューにこのオプションが表示されない場合は、VS Code にフォーマッタ拡張機能がインストールされていないか、有効になっていない可能性があります。フォーマッタの選択セクションを参照して、Python フォーマッタ拡張機能をインストールする方法を確認してください。 |
フォーマッタのカスタム引数が正しくありません。 | 適切な <formatter>.path 設定に引数が含まれていないこと、および <formatter>.args に個々のトップレベルの引数要素のリストが含まれていることを確認します。 |
「非推奨のリンティングまたはフォーマット設定があります」という通知が表示されます。 | この通知が表示される場合は、VS Code に python.linting や python.formatting などの設定があることを意味します。リンティングとフォーマットのサポートがツール拡張機能に移行されたため、これらの設定は Python 拡張機能ではサポートされなくなりました。 |
Black Formatter を使用すると [選択範囲のフォーマット] コマンドが失敗します。 | black はコードの一部分のフォーマットをサポートしていません。この制限を回避するには、貼り付け時のフォーマットを無効にし、formatOnSave を設定して、次の設定でファイル全体をフォーマットします: "[python]": {"editor.formatOnPaste": false, "editor.formatOnSaveMode": "file"} 。 |
フォーマッタ拡張機能をインストールしているのに、フォーマットが機能しません。 | フォーマットは、コードの構文の問題、サポートされていないバージョンの Python の使用、フォーマッタが正しく構成されていないなど、さまざまな理由で失敗する可能性があります。フォーマッタ拡張機能の出力チャネルを確認して、フォーマッタが失敗した理由を理解してください (コマンドパレットで [出力: 出力にフォーカス] コマンドを実行し、フォーマッタ拡張機能チャネルを選択します)。 |
注: 上記のリストにお好みのフォーマッタが見つからない場合は、拡張機能を通じてサポートを追加できます。Python 拡張機能テンプレートを使用すると、新しい Python ツールを VS Code に簡単に統合できます。
次のステップ
- デバッグ - Pythonをローカルおよびリモートでデバッグする方法を学びます。
- テスト - テスト環境を構成し、テストを発見、実行、デバッグします。
- 基本的な編集 - 強力な VS Code エディターについて学習します。
- コード ナビゲーション - ソースコード内をすばやく移動します。
- Python 拡張機能テンプレート - お気に入りのリンターを VS Code に統合するための拡張機能を作成します。