🚀 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 は、ワークスペース内のモジュールと、環境にインストールしたパッケージの自動インポート候補を提供します。エディターで入力すると、補完候補が表示される場合があります。候補を受け入れると、自動インポートによって対応するインポート ステートメントがファイルに自動的に追加されます。

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

Add import code action

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

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 などの拡張機能をサポートしており、インポートの並べ替え 機能を実装しています。このコマンドは、同じモジュールからの特定のインポートを 1 つの import ステートメントに統合し、import ステートメントをアルファベット順に整理します。

これを呼び出すには、インポートの並べ替えをサポートする拡張機能をインストールし、コマンド パレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を開き、インポートの整理 を実行します。

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

Sorting import statements

トラブルシューティング

一般的な IntelliSense および Python 編集の問題のヘルプについては、以下の表を確認してください。

問題 原因 解決策
Pylance は、インポートを追加するときに最上位のシンボル オプションのみを提供しています。 デフォルトでは、最上位モジュールのみがインデックス化されます (depth=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 つ以上のモジュール間の循環依存関係を検出した場合に発生します。

修正方法

循環依存関係を解消するために、インポート ステートメントの順序を変更してみてください。


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

次のステップ

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