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

VS CodeにおけるPython環境

Pythonにおける「環境」とは、Pythonプログラムが実行されるコンテキストのことで、インタープリターと任意の数のインストール済みパッケージで構成されます。

: Pythonプログラミング言語についてさらに詳しく知りたい場合は、「その他のPythonリソース」を参照してください。

Python環境の種類

グローバル環境

既定では、インストールされているPythonインタープリターはすべて独自のグローバル環境で実行されます。たとえば、新しいターミナルでpythonpython3、またはpyを実行するだけの場合(Pythonのインストール方法による)、そのインタープリターのグローバル環境で実行していることになります。インストールまたはアンインストールするパッケージは、グローバル環境と、その中で実行するすべてのプログラムに影響します。

ヒント: Pythonでは、ワークスペース固有の環境を作成することが推奨されるベストプラクティスです。たとえば、ローカル環境を使用するなどです。

ローカル環境

ワークスペース用に作成できる環境には、仮想環境Conda環境の2種類があります。これらの環境を使用すると、他の環境に影響を与えることなくパッケージをインストールでき、ワークスペースのパッケージインストールを分離できます。

仮想環境

仮想環境は、環境を作成するための組み込みの方法です。仮想環境は、特定のインタープリターへのコピー(またはシンボリックリンク)を含むフォルダーを作成します。仮想環境にパッケージをインストールすると、この新しいフォルダーに格納され、他のワークスペースで使用される他のパッケージから分離されます。

: 仮想環境フォルダーをワークスペースとして開くことは可能ですが、推奨されず、Python拡張機能の使用に問題を引き起こす可能性があります。

Conda環境

Conda環境は、condaパッケージマネージャーを使用して管理されるPython環境です(「conda の使用を開始する」を参照)。Conda環境と仮想環境のどちらを選択するかは、パッケージングのニーズ、チームの標準などによって異なります。

Python環境ツール

次の表に、Python環境に関連するさまざまなツールを示します。

ツール 定義と目的
pip パッケージをインストールおよび更新するPythonパッケージマネージャーです。Python 3.9以降で既定でインストールされます(DebianベースのOSを使用している場合を除く。その場合はpython3-pipをインストールしてください)。
venv 異なるプロジェクト用に個別のパッケージインストールを管理でき、Python 3に既定でインストールされます(DebianベースのOSを使用している場合を除く。その場合はpython3-venvをインストールしてください)。
conda Minicondaとともにインストールされます。パッケージと仮想環境の両方を管理するために使用できます。一般的にデータサイエンスプロジェクトで使用されます。

環境の作成

環境の作成コマンドを使用する

VS Codeで仮想環境またはAnacondaを使用してローカル環境を作成するには、次の手順を実行します: コマンドパレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))を開き、Python: 環境の作成コマンドを検索して選択します。

このコマンドは、環境の種類としてVenvまたはCondaのリストを表示します。

Create Environment dropdown

Venvを使用して環境を作成する場合、コマンドは新しい仮想環境のベースとして使用できるインタープリターのリストを表示します。

Virtual environment interpreter selection

Condaを使用して環境を作成する場合、コマンドはプロジェクトに使用できるPythonバージョンのリストを表示します。

Conda environment Python version selection

目的のインタープリターまたはPythonバージョンを選択すると、環境作成の進行状況を示す通知が表示され、環境フォルダーがワークスペースに表示されます。

Create environment status notification

: このコマンドは、プロジェクトフォルダーにあるrequirements.txtpyproject.tomlenvironment.ymlなどの要件/依存関係ファイルに記載されている必要なパッケージもインストールします。また、仮想環境を誤ってソース管理にコミットするのを防ぐために、仮想環境に.gitignoreファイルを追加します。

ターミナルで仮想環境を作成する

仮想環境を手動で作成する場合は、次のコマンドを使用します(「.venv」は環境フォルダーの名前です)。

# macOS/Linux
# You may need to run `sudo apt-get install python3-venv` first on Debian-based OSs
python3 -m venv .venv

# Windows
# You can also use `py -3 -m venv .venv`
python -m venv .venv

: venvモジュールについて詳しくは、Python.orgの「仮想環境の作成」を参照してください。

新しい仮想環境を作成すると、VS Codeにプロンプトが表示され、ワークスペース用にその環境を選択できるようになります。

Python environment prompt

ヒント: 仮想環境を誤ってコミットしないように、ソース管理設定を更新してください(たとえば、.gitignore)。仮想環境はポータブルではないため、通常、他のユーザーが使用するためにコミットしても意味がありません。

ターミナルでConda環境を作成する

Python拡張機能は、既存のConda環境を自動的に検出します。Conda環境にPythonインタープリターをインストールすることをお勧めします。そうしないと、環境を選択した後にインストールされます。たとえば、次のコマンドは、Python 3.9インタープリターといくつかのライブラリを持つenv-01という名前のConda環境を作成します。

conda create -n env-01 python=3.9 scipy=0.15.0 numpy

: condaコマンドラインの詳細については、「Conda環境」を参照してください。

その他の注意事項

  • VS Codeの実行中に新しいConda環境を作成した場合は、Python: インタープリターの選択ウィンドウの右上にある更新アイコンを使用してください。そうしないと、そこに環境が見つからない場合があります。

    Conda environment refresh icon

  • シェルからの環境が適切に設定されていることを確認するには、Anacondaプロンプトを使用し、目的の環境をアクティブ化します。次に、code .コマンドを入力してVS Codeを起動できます。VS Codeが開いたら、コマンドパレットを使用するか、ステータスバーをクリックしてインタープリターを選択できます。

  • VS CodeのPython拡張機能は現在、condaのenvironment.ymlファイルと直接統合されていませんが、VS Code自体は優れたYAMLエディターです。

  • 既定のシェルがPowerShellに設定されている場合、VS Code統合ターミナルでConda環境を自動的にアクティブ化することはできません。シェルを変更するには、「統合ターミナル - ターミナルプロファイル」を参照してください。

  • アクティベーションに使用するconda実行可能ファイルのパスを手動で指定できます(バージョン4.4以降)。これを行うには、コマンドパレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))を開き、設定: ユーザー設定を開くを実行します。次に、ユーザー設定のPython拡張機能セクションにあるpython.condaPathを適切なパスに設定します。

Pythonインタープリターの使用

環境を選択してアクティブ化する

Python拡張機能は、ワークスペースに最適な環境を見つけて選択しようとします。特定の環境を選択したい場合は、コマンドパレット⇧⌘P (Windows、Linux Ctrl+Shift+P))からPython: インタープリターの選択コマンドを使用します。

Python: Select Interpreter command

: Python拡張機能がインタープリターを見つけられない場合、警告が表示されます。macOS 12.2以前では、OSにインストールされているPythonインタープリターを使用している場合にも、互換性の問題があることが知られているため、拡張機能は警告を表示します。いずれの場合も、ユーザー設定python.disableInstallationChecktrueに設定することで、これらの警告を無効にできます。

Python: インタープリターの選択コマンドは、利用可能なグローバル環境、Conda環境、仮想環境のリストを表示します。(これらの環境の種類の違いを含め、詳細については「拡張機能が環境を探す場所」セクションを参照してください。)たとえば、次の画像は、ワークスペースフォルダー内にあるConda環境と仮想環境(env)とともに、いくつかのAnacondaおよびCPythonのインストールを示しています。

List of interpreters

注: Windowsでは、VS Codeが利用可能なConda環境を検出するのに少し時間がかかる場合があります。その過程で、環境へのパスの前に「(cached)」と表示されることがあります。このラベルは、VS Codeが現在その環境のキャッシュ情報を使用していることを示します。

VS Codeでフォルダーまたはワークスペースを開いているときにリストからインタープリターを選択すると、Python拡張機能はその情報を内部的に保存します。これにより、ワークスペースを再度開いたときに同じインタープリターが使用されることが保証されます。

選択された環境は、Python拡張機能によってPythonコードの実行(Python: ターミナルでPythonファイルを実行コマンドを使用)、エディターで.pyファイルを開いている場合の言語サービス(自動補完、構文チェック、リンティング、フォーマットなど)の提供、およびターミナル: 新しいターミナルを作成コマンドを使用したターミナルの開​​始に使用されます。後者の場合、VS Codeは選択された環境を自動的にアクティブ化します。

ヒント: 選択した環境の自動アクティベーションを防ぐには、"python.terminal.activateEnvironment": falsesettings.jsonファイルに追加します(既存の設定の兄弟としてどこにでも配置できます)。

ヒント: アクティベーションコマンドで「Activate.ps1 is not digitally signed. You cannot run this script on the current system.」というメッセージが表示される場合、スクリプトの実行を許可するためにPowerShellの実行ポリシーを一時的に変更する必要があります(PowerShellドキュメントの「実行ポリシーについて」を参照):Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

: 既定では、VS Codeはコードのデバッグ時にワークスペース用に選択されたインタープリターを使用します。デバッグ構成のpythonプロパティに別のパスを指定することで、この動作をオーバーライドできます。「デバッグ環境の選択」を参照してください。

選択されたインタープリターのバージョンは、ステータスバーの右側に表示されます。

Status Bar showing a selected interpreter

ステータスバーは、インタープリターが選択されていない場合も反映します。

Status bar showing no selected Python interpreter

いずれの場合も、ステータスバーのこの領域をクリックすると、Python: インタープリターの選択コマンドの便利なショートカットになります。

ヒント: VS Codeが仮想環境を認識する上で問題がある場合は、原因を特定するために問題を報告してください。

インタープリターを手動で指定する

VS Codeが使用したいインタープリターを自動的に検出しない場合、ファイルシステム上のインタープリターを参照するか、手動でパスを指定することができます。

これを行うには、Python: インタープリターの選択コマンドを実行し、インタープリターリストの上部に表示されるインタープリターのパスを入力...オプションを選択します。

Enter interpreter path option on the interpreters list

その後、Pythonインタープリターのフルパスをテキストボックスに直接入力するか(例: ".venv/Scripts/python.exe")、または検索...ボタンを選択してファイルシステムを参照し、選択したいPython実行可能ファイルを見つけることができます。

Enter path or browse for an interpreter

ワークスペースを初めて開くときに使用される既定のインタープリターを手動で指定したい場合は、python.defaultInterpreterPath設定のエントリを作成または変更できます。

: ワークスペースに対してインタープリターがすでに選択された後では、python.defaultInterpreterPath設定への変更は反映されません。最初のインタープリターがワークスペースに対して選択されると、設定への変更は無視されます。

さらに、すべてのPythonアプリケーションに既定のインタープリターを設定したい場合は、ユーザー設定にpython.defaultInterpreterPathのエントリを手動で追加できます。これを行うには、コマンドパレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))を開き、設定: ユーザー設定を開くと入力します。次に、ユーザー設定のPython拡張機能セクションにあるpython.defaultInterpreterPathを適切なインタープリターに設定します。

拡張機能が環境を自動的に選択する方法

インタープリターが指定されていない場合、Python拡張機能は次の優先順位で最も新しいバージョンのインタープリターを自動的に選択します。

  1. ワークスペースフォルダーの直下にある仮想環境。
  2. ワークスペースに関連しているがグローバルに保存されている仮想環境。たとえば、ワークスペースフォルダーの外にあるPipenvまたはPoetry環境。
  3. グローバルにインストールされたインタープリター。たとえば、/usr/local/binC:\\python38などにあるもの。

: 選択されたインタープリターは、ターミナルでpythonが参照するものとは異なる場合があります。

Visual Studio Codeがインタープリターを自動的に検出しない場合は、インタープリターを手動で指定できます。

拡張機能が環境を探す場所

拡張機能は、特定の順序ではなく、次の場所でインタープリターを自動的に探します。

  • /usr/local/bin/usr/sbin/sbinc:\\python36などの標準インストールパス。
  • ワークスペース(プロジェクト)フォルダーの直下にある仮想環境。
  • python.venvPath設定によって識別されるフォルダー(「一般的なPython設定」を参照)にある仮想環境。このフォルダーには複数の仮想環境を含めることができます。拡張機能は、venvPathの第一レベルのサブフォルダーで仮想環境を探します。
  • virtualenvwrapper~/.virtualenvsフォルダーにある仮想環境。
  • pyenvPipenv、およびPoetryによって作成されたインタープリター。
  • WORKON_HOMEによって識別されるパスにある仮想環境(virtualenvwrapperで使用されるもの)。
  • conda env listによって見つかったConda環境。インタープリターを持たないConda環境には、選択時にインタープリターがインストールされます。
  • ワークスペースフォルダーの下にあるdirenv.direnvフォルダーにインストールされているインタープリター。

環境とターミナルウィンドウ

Python: インタープリターの選択を使用した後、ファイルを右クリックしてPython: ターミナルでPythonファイルを実行を選択すると、そのインタープリターが適用されます。python.terminal.activateEnvironment設定をfalseに変更しない限り、ターミナル: 新しいターミナルを作成コマンドを使用すると環境も自動的にアクティブ化されます。

特定のPython環境がアクティブ化されているシェルからVS Codeを起動しても、既定の統合ターミナルでその環境が自動的にアクティブ化されるわけではないことに注意してください。

注: 統合シェルとしてPowerShellが設定されている場合、統合ターミナルでConda環境を自動的にアクティブ化することはできません。シェルの変更方法については、「統合ターミナル - ターミナルプロファイル」を参照してください。

Python: インタープリターの選択コマンドでインタープリターを変更しても、すでに開いているターミナルパネルには影響しません。したがって、分割ターミナルで別々の環境をアクティブ化できます。最初のインタープリターを選択し、そのターミナルを作成し、別のインタープリターを選択してから、ターミナルのタイトルバーにある分割ボタン(⌘\ (Windows、Linux Ctrl+Shift+5))を使用します。

デバッグ環境を選択する

既定では、デバッガーはPython拡張機能で選択されたPythonインタープリターを使用します。ただし、launch.jsonのデバッグ構成でpythonプロパティが指定されている場合、それが優先されます。このプロパティが定義されていない場合は、ワークスペース用に選択されたPythonインタープリターパスの使用にフォールバックします。

デバッグ構成の詳細については、「デバッグ構成」を参照してください。

環境変数

環境変数定義ファイル

環境変数定義ファイルは、environment_variable=valueの形式でキーと値のペアを含むテキストファイルで、コメントには#が使用されます。複数行の値はサポートされていませんが、以前に定義された環境変数への参照は許可されます。環境変数定義ファイルは、デバッグやツール実行(リンター、フォーマッター、IntelliSense、テストツールを含む)などのシナリオに使用できますが、ターミナルには適用されません。

: 環境変数定義ファイルは、必ずしもクロスプラットフォームであるとは限りません。たとえば、Unixでは環境変数で:をパス区切り文字として使用しますが、Windowsでは;を使用します。このようなオペレーティングシステムの違いの正規化は行われないため、使用する環境定義ファイルの値がオペレーティングシステムと互換性があることを確認する必要があります。

既定では、Python拡張機能は現在のワークスペースフォルダーで.envという名前のファイルを探してロードし、その定義を適用します。このファイルは、ユーザー設定の既定のエントリ"python.envFile": "${workspaceFolder}/.env"によって識別されます(「一般的なPython設定」を参照)。python.envFile設定は、いつでも変更して別の定義ファイルを使用できます。

: 環境変数定義ファイルは、環境変数が使用可能なすべての状況で使用されるわけではありません。Visual Studio Codeのドキュメントに別途記載されていない限り、これらは定義どおり特定のシナリオのみに影響します。たとえば、拡張機能は設定値を解決する際に環境変数定義ファイルを使用しません。

デバッグ構成にもenvFileプロパティが含まれており、既定では現在のワークスペースの.envファイルが使用されます(「デバッグ - 構成オプションの設定」を参照)。このプロパティを使用すると、既定の.envファイルで指定された変数を置き換えるデバッグ目的の変数を簡単に設定できます。

たとえば、Webアプリケーションを開発している場合、開発サーバーと本番サーバーを簡単に切り替えたい場合があります。異なるURLやその他の設定をアプリケーションに直接コーディングする代わりに、それぞれに個別の定義ファイルを使用できます。例:

dev.env ファイル

# dev.env - development configuration

# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/

# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/dev
MYPROJECT_DBUSER=devadmin
MYPROJECT_DBPASSWORD=!dfka**213=

prod.env ファイル

# prod.env - production configuration

# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/

# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/
MYPROJECT_DBUSER=coreuser
MYPROJECT_DBPASSWORD=kKKfa98*11@

その後、python.envFile設定を${workspaceFolder}/prod.envに設定し、デバッグ構成のenvFileプロパティを${workspaceFolder}/dev.envに設定できます。

: 環境変数を複数の方法で指定する場合、優先順位があることに注意してください。launch.jsonファイルで定義されているすべてのenv変数は、python.envFile設定(ユーザーまたはワークスペース)で指定された.envファイルに含まれる変数をオーバーライドします。同様に、launch.jsonファイルで定義されているenv変数は、launch.jsonで指定されているenvFileで定義されている環境変数をオーバーライドします。

PYTHONPATH変数の使用

PYTHONPATH環境変数は、Pythonインタープリターがモジュールを探すべき追加の場所を指定します。VS Codeでは、PYTHONPATHはターミナル設定(terminal.integrated.env.*)または.envファイル内で設定できます。

ターミナル設定が使用される場合、PYTHONPATHはユーザーがターミナル内で実行するツールや、デバッグなどのターミナル経由でユーザーのために拡張機能が実行するすべてのアクションに影響します。ただし、リンターやフォーマッターの使用など、拡張機能がターミナル経由ではないアクションを実行する場合、この設定はモジュールの検索に影響しません。

次のステップ

  • コードの編集 - Pythonのオートコンプリート、IntelliSense、書式設定、リファクタリングについて学びます。
  • デバッグ - Pythonをローカルおよびリモートでデバッグする方法を学びます。
  • テスト - テスト環境を構成し、テストを発見、実行、デバッグします。
  • 設定リファレンス - VS CodeのPython関連設定の全範囲を探索します。

その他のPythonリソース