VS Code での Python のフォーマット
フォーマットは、ソースコードを人間が読みやすくします。行間隔、インデント、演算子の周りのスペースなどの特定のルールと規則を適用することで、コードは視覚的に整理され、理解しやすくなります。autopep8 ページの例をご覧ください。フォーマットはコード自体の機能には影響しないことに注意してください。
Linting は、一般的な構文、スタイル、機能的なエラーや、慣習的でないプログラミングプラクティスについてコードを分析することで、エラーを防ぐのに役立ちます。フォーマットと Linting には多少の重複がありますが、2 つの機能は相補的なものです。
フォーマッターの選択
VS Code マーケットプレイスでお好みのフォーマッター拡張機能を検索してください。
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 |
さらに、以下はインポートソートをサポートするフォーマッター拡張機能です。
フォーマッター | 拡張機能 |
---|---|
Ruff | https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff |
isort | https://marketplace.visualstudio.com/items?itemName=ms-python.isort |
注意: 上記の表またはマーケットプレイスにお好みのフォーマッターが見つからない場合は、拡張機能を使用してサポートを追加できます。Python 拡張機能テンプレート を使用すると、新しい Python ツールを VS Code に簡単に統合できます。
デフォルトのフォーマッターの設定
フォーマッター拡張機能をインストールしたら、以下の手順に従って、VS Code で Python ファイルのデフォルトフォーマッターとして選択できます。
- VS Code で Python ファイルを開きます。
- エディターを右クリックしてコンテキストメニューを表示します。
- Format Document With... を選択します。
- ドロップダウンメニューから Configure Default Formatter... を選択します。
- リストからお好みのフォーマッター拡張機能を選択します。
または、User settings.json ファイルの [python] スコープの下で "editor.defaultFormatter"
を設定することにより、すべての Python ファイルのデフォルトフォーマッターとして設定できます。settings.json は Preferences: Open User Settings (JSON) コマンドで開くことができます。
たとえば、Black Formatter をデフォルトフォーマッターとして設定するには、User settings.json ファイルに次の設定を追加します。
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
フォーマッター拡張機能をインポートソーターとして設定するには、User settings.json ファイルまたは Workspace settings.json ファイルの [python] スコープの下で "editor.codeActionsOnSave"
に設定を記述します。これらの settings.json ファイルは、それぞれ Preferences: Open User Settings (JSON) および Preferences: Open Workspace Settings (JSON) コマンドを使用して開くことができます。これにより、すべての Python ファイルで保存時のインポートソートが有効になります。
たとえば、Ruff をお好みのインポートソーターとして設定するには、User settings.json または Workspace settings.json ファイルに次の設定を追加します。
{
"[python]": {
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit"
}
}
}
コードのフォーマット
エディターを右クリックして Format Document を選択するか、⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) キーボードショートカットを使用することで、コードをフォーマットできます。
また、User 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 に個別のトップレベル引数要素のリストが含まれていることを確認してください。 |
「Linting またはフォーマット設定が非推奨になりました」という通知が表示されます。 | この通知が表示されている場合は、VS Code に python.linting や python.formatting などの設定があることを意味します。linting とフォーマットのサポートがツール拡張機能に移行 されたため、これらの設定は 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 に統合する拡張機能を作成します。