VS Codeのエージェントモードを拡張するには、を試してください!

Visual Studio Code での Python の編集

Visual Studio Code は、Python ソースコード用の強力な編集ツールです。このエディターには、コード作成時の生産性向上に役立つさまざまな機能が含まれています。Visual Studio Code での編集の詳細については、基本的な編集コードナビゲーションを参照してください。

この概要では、Python 拡張機能によって提供される特定の編集機能について説明します。これには、ユーザーおよびワークスペースの設定を介してこれらの機能をカスタマイズする方法も含まれます。

オートコンプリートと IntelliSense

IntelliSense は、コード補完に関連するコード編集機能の一般的な用語です。以下の例をご覧ください。**print** と入力すると、IntelliSense がオートコンプリートオプションを表示することに注目してください。また、**greeting** という変数名の入力を開始すると、オプションのリストが表示されます。

Hello World Example for IntelliSense

オートコンプリートと 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.autoImportCompletionstrue に設定することで、自動インポートを有効にできます。既定では、自動インポートは無効になっています。

Completion with auto import displayed on the suggestion list

カスタムパッケージの場所に対する 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 を活用したコード補完ツールで、より迅速かつスマートにコードを記述するのに役立ちます。VS Code でGitHub Copilot 拡張機能を使用してコードを生成したり、生成されたコードから学習したりできます。

GitHub Copilot extension in the VS Code Marketplace

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 を使用すると、インポートの追加クイックフィックスにより、環境にインストールされているモジュールの import ステートメントをすばやく補完できます。エディターでパッケージ名の入力を開始すると、ソースコードの行を自動的に補完するコードアクションが利用可能になります。テキスト (波線でマークされている) にマウスカーソルを合わせ、コードアクションの電球を選択します。その後、潜在的なインポートのリストから選択できます。

Add import code action

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

Common package abbreviations

インポート候補リストには、信頼度の高い上位 3 つのインポートオプションが表示され、最近使用されたインポート、同じモジュールからのシンボル、標準ライブラリからのシンボル、ユーザーモジュールからのシンボル、サードパーティパッケージからのシンボル、そして最後にモジュール名とシンボル名で並べ替えられる優先順位に基づいています。

追加のインポート一致を検索

既定では、インポートの追加クイックフィックスは、信頼度の高い上位 3 つのインポートオプションのみを表示します。探しているものがリストにない場合は、不足しているインポートエラーに対して Pylance の追加のインポート一致を検索クイックフィックスを使用できます。このクイックフィックスは、不足しているインポートシンボルにプレフィックス一致するインポートオプションを検索できるクイックピックメニューを表示します。

Search for additional import matches Code Action

スペルを変更

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

Change spelling code action on missing import due to a typo

: ユーザーシンボルの場合、これらのクイックフィックスは、それらが定義されているファイルからのみインポートを提案します。ユーザーシンボルが外部/インポートされているファイルからのインポート候補はサポートされていません。

また、インストール済みパッケージ (通常、Python 環境の site-packages フォルダーの下にあります) からのシンボルの場合、これらのクイックフィックスでは、パッケージのルートフォルダー (__init__.py ファイルなど) で定義されているもののみが提案されます。この動作は python.analysis.packageIndexDepths 設定を介して特定のパッケージに対してカスタマイズできますが、Pylance のパフォーマンスに影響を与える可能性があることに注意してください。

リファクタリング

Python 拡張機能は、Pylance 拡張機能を介して以下のリファクタリング機能を追加します: 変数の抽出メソッドの抽出モジュールの名前変更シンボルの移動すべての継承された抽象クラスの実装。また、インポートのソートなど、追加のリファクタリング機能を実装する拡張機能もサポートしています。

変数の抽出

現在のスコープ内で選択したテキストの類似するすべての出現箇所を抽出し、新しい変数に置き換えます。

変数を抽出したいコード行を選択してこのコマンドを呼び出します。その後、その横に表示される電球アイコンを選択します。

Refactoring a variable

メソッドの抽出

現在のスコープ内で選択した式またはブロックの類似するすべての出現箇所を抽出し、メソッド呼び出しに置き換えます。

メソッドとして抽出したいコード行を選択してこのコマンドを呼び出します。その後、その横に表示される電球アイコンを選択します。

Refactoring code into a method

モジュールの名前変更

Python ファイル/モジュールの名前が変更された後、Pylance は更新が必要な可能性のあるすべてのインスタンスを見つけて、すべての変更のプレビューを提供できます。

どの参照を更新する必要があるかをカスタマイズするには、リファクタリングプレビューで、行レベルまたはファイルレベルのチェックボックスを切り替えます。選択が完了したら、リファクタリングを適用またはリファクタリングを破棄を選択できます。

Renaming a module

シンボルの移動

Pylance 拡張機能は、シンボルを異なるファイルに移動するプロセスを簡素化するための 2 つのコードアクションを提供します

  • シンボルを移動...: 移動するシンボルの宛先ファイルを選択するためのファイルピッカーを表示します。
  • シンボルを新しいファイルに移動: コードアクションが呼び出されたソースファイルと同じディレクトリに、シンボル名で新しいファイルを作成します。

これらのコードアクションにアクセスするには、移動したいシンボルにマウスカーソルを合わせ、希望するアクションの横に表示される電球アイコンを選択します。または、シンボルを右クリックし、コンテキストメニューからリファクタリング...を選択することもできます。

Move Symbol refactoring options

すべての継承された抽象クラスを実装する

Python では、抽象クラスは他のクラスの「設計図」として機能し、サブクラスが順守すべき明確な構造と要件を促進することで、モジュール式で再利用可能なコードの構築を支援します。Python で抽象クラスを定義するには、abc モジュールの ABC クラスを継承するクラスを作成し、そのメソッドを @abstractmethod デコレーターで注釈付けします。その後、この抽象クラスを継承する新しいクラスを作成し、ベースメソッドの実装を定義できます。

Pylance は、これらのクラスを作成するプロセスを簡素化するためのコードアクションを提供します。抽象クラスを継承する新しいクラスを定義する場合、すべての継承された抽象クラスを実装するコードアクションを使用して、親クラスのすべての抽象メソッドとプロパティを自動的に実装できるようになりました。

Implement inherited abstract classes

インポートのソート

Python 拡張機能は、インポートのソート機能を実装する isortRuff などの拡張機能をサポートしています。このコマンドは、同じモジュールからの特定のインポートを単一の import ステートメントに統合し、import ステートメントをアルファベット順に整理します。

インポートのソートをサポートする拡張機能をインストールし、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開いてインポートの整理を実行することで、これを呼び出すことができます。

ヒント: editor.action.organizeImports コマンドにキーボードショートカットを割り当てることができます。

Sorting import statements

トラブルシューティング

一般的な IntelliSense と Python の編集に関する問題のヘルプについては、以下の表を確認してください

問題 原因 解決策
インポートを追加する際に、Pylance がトップレベルのシンボルオプションのみを提供している。 既定では、トップレベルのモジュールのみがインデックス化されます (深さ=1)。
たとえば、import matplotlib は候補として表示されることがありますが、既定では import matplotlib.pyplot は表示されません。
python.analysis.packageIndexDepths を介して、Pylance がインストール済みのライブラリをインデックス化できる深さを増やしてみてください。コード分析設定を確認してください。
Pylance が不足しているインポートを自動的に追加しない 自動インポート補完設定が無効になっている可能性があります。 自動インポートを有効にするセクションを確認してください。
自動インポートが有効になっているが、Pylance がワークスペース内の他のファイルで定義されているシンボルを自動的にインポートしない。 ユーザー定義シンボル (インストールされているパッケージやライブラリに由来しないもの) は、エディターで開かれているファイルで既にそれらが使用されている場合にのみ、自動的にインポートされます。
それ以外の場合は、インポートの追加クイックフィックスを介してのみ利用できます。
インポートの追加クイックフィックスを使用するか、まずワークスペース内の関連ファイルを必ず開いてください。
大規模なワークスペースで作業する際に、Pylance の動作が遅い、またはメモリを過剰に消費しているように見える。 Pylance の分析は、特定のワークスペース内のすべてのファイルに対して行われます。 Pylance の分析から除外できるサブフォルダーがある場合は、それらのパスを python.analysis.exclude 設定に追加できます。または、python.analysis.indexingfalse に設定して 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 つ以上のモジュール間で循環依存関係を検出した場合に発生します。

修正方法

循環依存関係を解消するために、import ステートメントを並べ替えてみてください。


Pylance の診断の重要度は、python.analysis.diagnosticSeverityOverrides 設定を介してカスタマイズできます。詳細については、設定リファレンスを確認してください。

次のステップ

  • Linting - さまざまな Python リンターを有効化、構成、適用します。
  • デバッグ - Pythonをローカルおよびリモートでデバッグする方法を学びます。
  • テスト - テスト環境を構成し、テストを発見、実行、デバッグします。
  • 基本的な編集 - 強力な VS Code エディターについて学習します。
  • コード ナビゲーション - ソースコード内をすばやく移動します。
  • IntelliSense - IntelliSense 機能について学習します。
  • Jupyter サポート - Jupyter Notebook の開始方法について学習します。
  • Python 拡張機能テンプレート - お気に入りの Python ツールを統合するための拡張機能を作成します。