Visual Studio CodeでのPythonの編集
Visual Studio Codeは、Pythonソースコードの強力な編集ツールです。このエディターには、コード作成時の生産性を高めるためのさまざまな機能が含まれています。Visual Studio Codeでの編集の詳細については、基本的な編集とコードナビゲーションを参照してください。
この概要では、Python拡張機能によって提供される特定の編集機能について説明し、ユーザーおよびワークスペースの設定を介してこれらの機能をカスタマイズする手順も説明します。
オートコンプリートとIntelliSense
IntelliSenseは、コード補完に関連するコード編集機能の総称です。以下の例を見てみましょう。printと入力すると、IntelliSenseがオートコンプリートオプションを表示する方法に注目してください。ユーザーがgreetingという名前の変数を入力し始めると、オプションのリストも表示されます。

オートコンプリートとIntelliSenseは、現在の作業フォルダー内のすべてのファイルで提供されます。また、標準の場所にインストールされているPythonパッケージでも利用できます。
Pylanceは、VS CodeにおけるPythonのデフォルトの言語サーバーであり、IntelliSense機能を提供するためにPython拡張機能とともにインストールされます。
Pylanceは、MicrosoftのPyright静的型チェックツールに基づいており、型スタブ(.pyiファイル)と遅延型推論を活用して、高性能な開発エクスペリエンスを提供します。
IntelliSense全般の詳細については、IntelliSenseを参照してください。
ヒント:VS Code用IntelliCode拡張機能をチェックしてください。IntelliCodeは、現在のコードコンテキストに基づいて最も関連性の高いオートコンプリートを推論するなど、PythonのIntelliSenseのためのAIアシスト機能をセットで提供します。詳細については、VS Code用IntelliCode FAQを参照してください。
IntelliSenseの動作をカスタマイズする
デフォルトでIntelliSenseの全機能を有効にすると、開発エクスペリエンスが遅く感じられる可能性があります。そのため、Python拡張機能は、高性能なエクスペリエンスを維持しながら生産性を高めるための最小限の機能を有効にしています。ただし、複数の設定を通じて、分析エンジンの動作を好みに合わせてカスタマイズできます。
自動インポートを有効にする
Pylanceは、ワークスペース内のモジュールと環境にインストールしたパッケージの自動インポート候補を提供します。エディターに入力すると、補完候補が表示される場合があります。候補を受け入れると、自動インポートによって対応するimportステートメントがファイルに自動的に追加されます。
設定でpython.analysis.autoImportCompletionsをtrueに設定することで、自動インポートを有効にできます。デフォルトでは、自動インポートは無効になっています。

カスタムパッケージの場所のIntelliSenseを有効にする
標準以外の場所にインストールされているパッケージのIntelliSenseを有効にするには、それらの場所をsettings.jsonファイルのpython.analysis.extraPathsコレクションに追加します(デフォルトのコレクションは空です)。たとえば、Flaskを使用している場合、app.yamlで指定されたカスタムの場所にGoogle App Engineがインストールされていることがあります。この場合、それらの場所を次のように指定します。
Windows
"python.analysis.extraPaths": [
"C:/Program Files (x86)/Google/google_appengine",
"C:/Program Files (x86)/Google/google_appengine/lib/flask-0.12"]
macOS/Linux
"python.analysis.extraPaths": [
"~/.local/lib/Google/google_appengine",
"~/.local/lib/Google/google_appengine/lib/flask-0.12" ]
利用可能なIntelliSenseコントロールの完全なリストについては、Python拡張機能のコード分析設定とオートコンプリート設定を参照してください。
オートコンプリートとIntelliSenseの一般的な動作をカスタマイズしたり、機能を完全に無効にしたりすることもできます。IntelliSenseのカスタマイズで詳細を確認できます。
AI で補完を強化する
GitHub Copilot は、より速く、よりスマートにコードを記述するのに役立つ AI 搭載のコード補完ツールです。GitHub Copilot 拡張機能を VS Code で使用してコードを生成したり、生成されたコードから学習したりできます。
GitHub Copilot は、多数の言語とさまざまなフレームワークで提案を提供し、特に Python、JavaScript、TypeScript、Ruby、Go、C#、および C++ でうまく機能します。
Copilot の使用開始方法については、Copilot ドキュメントで詳しく学ぶことができます。
ナビゲーション
編集中に、さまざまな識別子を右クリックすると、いくつかの便利なコマンドを利用できます。
-
定義へ移動(F12)は、コードからオブジェクトを定義するコードにジャンプします。このコマンドは、ライブラリを扱っている場合に役立ちます。
-
定義をピーク(⌥F12(Windows Alt+F12、Linux Ctrl+Shift+F10))も似ていますが、定義をエディターに直接表示します(コードを隠さないようにエディターウィンドウにスペースを作ります)。Escapeを押すか、右上のxを使用してピークウィンドウを閉じます。
-
宣言へ移動は、コード内で変数またはその他のオブジェクトが宣言されている場所にジャンプします。
-
宣言をピークも似ていますが、宣言をエディターに直接表示します。ここでも、Escapeまたは右上のxを使用してピークウィンドウを閉じます。
クイックフィックス
インポートの追加
Pylanceを使用する場合、インポート追加のクイックフィックスにより、環境にインストールされているモジュールのインポートステートメントをすばやく補完できます。エディターでパッケージ名を入力し始めると、ソースコードの行を自動的に補完するためのコードアクションが利用可能になります。テキスト(波線でマークされています)にカーソルを合わせ、コードアクションの電球を選択します。その後、潜在的なインポートのリストから選択できます。

このコードアクションは、以下の一般的なPythonパッケージのいくつかの人気のある省略形も認識します: numpyをnp、tensorflowをtf、pandasをpd、matplotlib.pyplotをplt、matplotlibをmpl、mathをm、scipi.ioをspio、scipyをsp、panelをpn、holoviewsをhvとしています。

インポート候補リストには、最も信頼性の高い上位3つのインポートオプションが表示され、最近使用されたインポート、同じモジュールからのシンボル、標準ライブラリからのシンボル、ユーザーモジュールからのシンボル、サードパーティパッケージからのシンボル、そして最後にモジュール名とシンボル名でソートされます。
追加のインポートの一致を検索
デフォルトでは、インポート追加のクイックフィックスは、信頼性の高い上位3つのインポートオプションのみを表示します。探しているものがリストにない場合は、Pylanceの追加のインポートの一致を検索クイックフィックスを使用して、不足しているインポートエラーに対処できます。このクイックフィックスは、不足しているインポートシンボルとプレフィックス一致するインポートオプションを検索できるクイックピックメニューを表示します。

スペルの変更
Pylanceは、未解決の変数または不足しているインポートの診断で、スペルミスが原因である可能性が高い場合に、スペルの変更クイックフィックスを表示します。このコードアクションは、ワークスペースで見つかった最も近い一致に基づいて、シンボルの正しいスペルを提案します。

注:ユーザーシンボルの場合、これらのクイックフィックスは、それらが定義されているファイルからのインポートのみを提案します。ユーザーシンボルが外部/インポートされているファイルからのインポート候補はサポートされていません。
また、インストールされたパッケージ(通常はPython環境の
site-packagesフォルダーの下にあります)から取得されるシンボルの場合、そのパッケージのルートフォルダー(__init__.pyファイルなど)で定義されているもののみがこれらのクイックフィックスによって提案されることに注意してください。python.analysis.packageIndexDepths設定を通じて特定のパッケージのこの動作をカスタマイズできますが、Pylanceのパフォーマンスに影響を与える可能性があることに注意してください。
リファクタリング
Python拡張機能は、Pylance拡張機能を介して、変数の抽出、メソッドの抽出、モジュールの名前変更、シンボルの移動、およびすべての継承された抽象クラスの実装というリファクタリング機能を追加します。また、インポートのソートなどの追加のリファクタリング機能を実装する拡張機能もサポートしています。
変数の抽出
現在のスコープ内で選択されたテキストのすべての同様の出現を抽出し、新しい変数に置き換えます。
このコマンドは、変数として抽出したいコード行を選択することで呼び出すことができます。次に、その横に表示される電球を選択します。

メソッドの抽出
現在のスコープ内で選択された式またはブロックのすべての同様の出現を抽出し、メソッド呼び出しに置き換えます。
このコマンドは、メソッドとして抽出したいコード行を選択することで呼び出すことができます。次に、その横に表示される電球を選択します。

モジュールの名前変更
Pythonファイル/モジュールの名前が変更された後、Pylanceは更新が必要なすべてのインスタンスを見つけ、すべての変更のプレビューを提供できます。
更新が必要な参照をカスタマイズするには、リファクタリングプレビューでラインレベルまたはファイルレベルでチェックボックスを切り替えることができます。選択が終わったら、リファクタリングを適用またはリファクタリングを破棄を選択できます。

シンボルの移動
Pylance拡張機能は、シンボルを別のファイルに移動するプロセスを簡素化するための2つのコードアクションを提供します。
- シンボルを...に移動:シンボルを移動する先のファイルを選択するためのファイルピッカーを表示します。
- シンボルを新しいファイルに移動:コードアクションが呼び出されたソースファイルと同じディレクトリに、シンボル名を持つ新しいファイルを作成します。
これらのコードアクションには、移動したいシンボルにカーソルを合わせ、目的のアクションの横に表示される電球を選択することでアクセスできます。または、シンボルを右クリックし、コンテキストメニューからリファクタリング...を選択することもできます。

すべての継承された抽象クラスを実装
Pythonでは、抽象クラスは他のクラスの「設計図」として機能し、サブクラスが順守すべき明確な構造と要件を促進することで、モジュール化され再利用可能なコードの構築を支援します。Pythonで抽象クラスを定義するには、abcモジュール内のABCクラスを継承するクラスを作成し、そのメソッドを@abstractmethodデコレータでアノテーションします。その後、この抽象クラスを継承する新しいクラスを作成し、基本メソッドの実装を定義できます。
Pylanceは、これらのクラスを作成するプロセスを簡素化するためのコードアクションを提供します。抽象クラスを継承する新しいクラスを定義すると、すべての継承された抽象クラスを実装コードアクションを使用して、親クラスのすべての抽象メソッドとプロパティを自動的に実装できるようになりました。

インポートのソート
Python拡張機能は、isortやRuffなどのインポートのソート機能を実装する拡張機能をサポートしています。このコマンドは、同じモジュールからの特定のインポートを単一のimportステートメントに統合し、importステートメントをアルファベット順に整理します。
これを呼び出すには、インポートのソートをサポートする拡張機能をインストールし、コマンドパレット(⇧⌘P(Windows、Linux Ctrl+Shift+P))を開いてインポートの整理を実行します。
ヒント:
editor.action.organizeImportsコマンドにキーボードショートカットを割り当てることができます。

トラブルシューティング
一般的なIntelliSenseおよびPython編集の問題に関するヘルプについては、以下の表を確認してください。
| 問題 | 原因 | 解決策 |
|---|---|---|
| Pylanceは、インポートを追加する際にトップレベルのシンボルオプションしか提供しません。 | デフォルトでは、トップレベルモジュールのみがインデックス化されます(深さ=1)。 たとえば、デフォルトでは import matplotlibは候補として表示されますが、import matplotlib.pyplotは表示されません。 |
python.analysis.packageIndexDepthsを通じて、Pylanceがインストールされたライブラリをインデックス化できる深さを増やしてみてください。コード分析設定を確認してください。 |
| Pylanceが不足しているインポートを自動的に追加しません。 | 自動インポート補完設定が無効になっている可能性があります。 | 自動インポートの有効化セクションを確認してください。 |
| 自動インポートは有効になっていますが、Pylanceはワークスペース内の他のファイルで定義されているシンボルを自動的にインポートしません。 | ユーザー定義のシンボル(インストールされたパッケージやライブラリからのものではない)は、エディターで開かれているファイルですでに使用されている場合にのみ自動的にインポートされます。 それ以外の場合は、インポート追加のクイックフィックスを通じてのみ利用できます。 |
インポート追加のクイックフィックスを使用するか、最初にワークスペースの関連ファイルを必ず開いてください。 |
| 大規模なワークスペースで作業していると、Pylanceが遅い、またはメモリを多く消費しているように見えます。 | Pylanceの分析は、特定のワークスペースに存在するすべてのファイルに対して行われます。 | Pylanceの分析から除外できるとわかっているサブフォルダーがある場合は、そのパスをpython.analysis.exclude設定に追加できます。または、python.analysis.indexingをfalseに設定してPylanceのインデクサーを無効にすることもできます(注:これにより、補完および自動インポートのエクスペリエンスにも影響します。インデックス作成の詳細については、コード分析設定を参照してください)。 |
| カスタムモジュールをPythonプロジェクトにインストールできません。 | カスタムモジュールが標準以外の場所(pipを使用してインストールされていない)にあります。 | その場所をpython.autoComplete.extraPaths設定に追加し、VS Codeを再起動してください。 |
Pylance診断
Pylanceはデフォルトで、問題パネルにPythonファイルの診断情報を提供します。
以下は、Pylanceによって提供される最も一般的な診断の一部と、それらを修正する方法です。
importResolveSourceFailure
このエラーは、Pylanceがインポートされたパッケージの型スタブを見つけることができるが、パッケージ自体を見つけることができない場合に発生します。これは、インポートしようとしているパッケージが選択されたPython環境にインストールされていない場合に起こります。
修正方法
- パッケージが別のインタープリターまたはカーネルにすでにインストールされている場合は、正しいインタープリターを選択してください。
- パッケージがインストールされていない場合は、アクティブなターミナルで次のコマンドを実行してインストールできます:
python -m pip install {package_name}。
importResolveFailure
このエラーは、Pylanceがインポートしようとしているパッケージまたはモジュール、およびその型スタブを見つけることができない場合に発生します。
修正方法
- モジュールをインポートしている場合は、それがワークスペース内にあるか、
python.autoComplete.extraPaths設定に含まれる場所にあることを確認してください。 - インストールされていないパッケージをインポートしている場合は、アクティブなターミナルで次のコマンドを実行してインストールできます:
python -m pip install {package_name}。 - 別のインタープリターまたはカーネルにすでにインストールされているパッケージをインポートしている場合は、正しいインタープリターを選択してください。
- 編集可能なインストールで作業しており、現在インポートフックを使用するように設定されている場合は、互換性を高め、よりスムーズなインポート動作を確保するために、代わりにファイルパスのみを含む
.pthファイルを使用することを検討してください。Pyrightドキュメントで詳細を確認してください。
importCycleDetected
このエラーは、Pylanceが2つ以上のモジュール間で循環依存関係を検出した場合に発生します。
修正方法
循環依存関係を解消するために、インポートステートメントの順序を変更してみてください。
Pylanceの診断の重大度は、python.analysis.diagnosticSeverityOverrides設定を通じてカスタマイズできます。詳細については、設定リファレンスを確認してください。
次のステップ
- Linting - さまざまなPythonリンターを有効にし、構成し、適用します。
- デバッグ - Pythonをローカルおよびリモートでデバッグする方法を学びます。
- テスト - テスト環境を構成し、テストを発見、実行、デバッグします。
- 基本的な編集 - 強力な VS Code エディターについて学習します。
- コード ナビゲーション - ソースコード内をすばやく移動します。
- IntelliSense - IntelliSense機能について学びます。
- Jupyterサポート - Jupyter Notebooksの開始方法について学びます。
- Python拡張機能テンプレート - お気に入りのPythonツールを統合するための拡張機能を作成します。
