VS CodeにおけるPython環境
Pythonにおける「環境」とは、Pythonプログラムが実行されるコンテキストのことで、インタープリターと任意の数のインストール済みパッケージで構成されます。
注: Pythonプログラミング言語についてさらに詳しく知りたい場合は、「その他のPythonリソース」を参照してください。
Python環境の種類
グローバル環境
既定では、インストールされているPythonインタープリターはすべて独自のグローバル環境で実行されます。たとえば、新しいターミナルでpython
、python3
、または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のリストを表示します。
Venvを使用して環境を作成する場合、コマンドは新しい仮想環境のベースとして使用できるインタープリターのリストを表示します。
Condaを使用して環境を作成する場合、コマンドはプロジェクトに使用できるPythonバージョンのリストを表示します。
目的のインタープリターまたはPythonバージョンを選択すると、環境作成の進行状況を示す通知が表示され、環境フォルダーがワークスペースに表示されます。
注: このコマンドは、プロジェクトフォルダーにある
requirements.txt
、pyproject.toml
、environment.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にプロンプトが表示され、ワークスペース用にその環境を選択できるようになります。
ヒント: 仮想環境を誤ってコミットしないように、ソース管理設定を更新してください(たとえば、
.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: インタープリターの選択ウィンドウの右上にある更新アイコンを使用してください。そうしないと、そこに環境が見つからない場合があります。
-
シェルからの環境が適切に設定されていることを確認するには、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拡張機能がインタープリターを見つけられない場合、警告が表示されます。macOS 12.2以前では、OSにインストールされているPythonインタープリターを使用している場合にも、互換性の問題があることが知られているため、拡張機能は警告を表示します。いずれの場合も、ユーザー設定で
python.disableInstallationCheck
をtrue
に設定することで、これらの警告を無効にできます。
Python: インタープリターの選択コマンドは、利用可能なグローバル環境、Conda環境、仮想環境のリストを表示します。(これらの環境の種類の違いを含め、詳細については「拡張機能が環境を探す場所」セクションを参照してください。)たとえば、次の画像は、ワークスペースフォルダー内にあるConda環境と仮想環境(env
)とともに、いくつかのAnacondaおよびCPythonのインストールを示しています。
注: Windowsでは、VS Codeが利用可能なConda環境を検出するのに少し時間がかかる場合があります。その過程で、環境へのパスの前に「(cached)」と表示されることがあります。このラベルは、VS Codeが現在その環境のキャッシュ情報を使用していることを示します。
VS Codeでフォルダーまたはワークスペースを開いているときにリストからインタープリターを選択すると、Python拡張機能はその情報を内部的に保存します。これにより、ワークスペースを再度開いたときに同じインタープリターが使用されることが保証されます。
選択された環境は、Python拡張機能によってPythonコードの実行(Python: ターミナルでPythonファイルを実行コマンドを使用)、エディターで.py
ファイルを開いている場合の言語サービス(自動補完、構文チェック、リンティング、フォーマットなど)の提供、およびターミナル: 新しいターミナルを作成コマンドを使用したターミナルの開始に使用されます。後者の場合、VS Codeは選択された環境を自動的にアクティブ化します。
ヒント: 選択した環境の自動アクティベーションを防ぐには、
"python.terminal.activateEnvironment": false
をsettings.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
プロパティに別のパスを指定することで、この動作をオーバーライドできます。「デバッグ環境の選択」を参照してください。
選択されたインタープリターのバージョンは、ステータスバーの右側に表示されます。
ステータスバーは、インタープリターが選択されていない場合も反映します。
いずれの場合も、ステータスバーのこの領域をクリックすると、Python: インタープリターの選択コマンドの便利なショートカットになります。
ヒント: VS Codeが仮想環境を認識する上で問題がある場合は、原因を特定するために問題を報告してください。
インタープリターを手動で指定する
VS Codeが使用したいインタープリターを自動的に検出しない場合、ファイルシステム上のインタープリターを参照するか、手動でパスを指定することができます。
これを行うには、Python: インタープリターの選択コマンドを実行し、インタープリターリストの上部に表示されるインタープリターのパスを入力...オプションを選択します。
その後、Pythonインタープリターのフルパスをテキストボックスに直接入力するか(例: ".venv/Scripts/python.exe")、または検索...ボタンを選択してファイルシステムを参照し、選択したいPython実行可能ファイルを見つけることができます。
ワークスペースを初めて開くときに使用される既定のインタープリターを手動で指定したい場合は、python.defaultInterpreterPath
設定のエントリを作成または変更できます。
注: ワークスペースに対してインタープリターがすでに選択された後では、
python.defaultInterpreterPath
設定への変更は反映されません。最初のインタープリターがワークスペースに対して選択されると、設定への変更は無視されます。
さらに、すべてのPythonアプリケーションに既定のインタープリターを設定したい場合は、ユーザー設定にpython.defaultInterpreterPath
のエントリを手動で追加できます。これを行うには、コマンドパレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))を開き、設定: ユーザー設定を開くと入力します。次に、ユーザー設定のPython拡張機能セクションにあるpython.defaultInterpreterPath
を適切なインタープリターに設定します。
拡張機能が環境を自動的に選択する方法
インタープリターが指定されていない場合、Python拡張機能は次の優先順位で最も新しいバージョンのインタープリターを自動的に選択します。
- ワークスペースフォルダーの直下にある仮想環境。
- ワークスペースに関連しているがグローバルに保存されている仮想環境。たとえば、ワークスペースフォルダーの外にあるPipenvまたはPoetry環境。
- グローバルにインストールされたインタープリター。たとえば、
/usr/local/bin
、C:\\python38
などにあるもの。
注: 選択されたインタープリターは、ターミナルで
python
が参照するものとは異なる場合があります。
Visual Studio Codeがインタープリターを自動的に検出しない場合は、インタープリターを手動で指定できます。
拡張機能が環境を探す場所
拡張機能は、特定の順序ではなく、次の場所でインタープリターを自動的に探します。
/usr/local/bin
、/usr/sbin
、/sbin
、c:\\python36
などの標準インストールパス。- ワークスペース(プロジェクト)フォルダーの直下にある仮想環境。
python.venvPath
設定によって識別されるフォルダー(「一般的なPython設定」を参照)にある仮想環境。このフォルダーには複数の仮想環境を含めることができます。拡張機能は、venvPath
の第一レベルのサブフォルダーで仮想環境を探します。- virtualenvwrapperの
~/.virtualenvs
フォルダーにある仮想環境。 - pyenv、Pipenv、および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リソース
- VS CodeでPythonを始める - VS Codeでコードを編集、実行、デバッグする方法を学びます。
- 仮想環境とパッケージ (Python.org) - 仮想環境とパッケージについて詳しく学びます。
- Pythonモジュールのインストール (Python.org) - Pythonモジュールをインストールする方法を学びます。
- Pythonチュートリアル (Python.org) - Python言語について詳しく学びます。