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 とともにインストールされます。パッケージと仮想環境の両方を管理するために使用できます。一般的にデータサイエンスプロジェクトに使用されます。 |
環境の作成
環境の作成コマンドの使用
仮想環境または Anaconda を使用して VS Code でローカル環境を作成するには、次の手順に従います。コマンドパレットを開き (⇧⌘P (Windows、Linux Ctrl+Shift+P))、Python: 環境の作成 コマンドを検索して選択します。
コマンドは、環境タイプ(Venv または Conda)のリストを表示します。
Venv を使用して環境を作成する場合、コマンドは新しい仮想環境のベースとして使用できるインタープリターのリストを表示します。
Conda を使用して環境を作成する場合、コマンドはプロジェクトに使用できる Python バージョンのリストを表示します。
目的のインタープリターまたは Python バージョンを選択すると、環境の作成の進行状況が通知で表示され、環境フォルダーがワークスペースに表示されます。
注: このコマンドは、プロジェクトフォルダーにある
requirements.txt
、pyproject.toml
、またはenvironment.yml
などの requirements/dependencies ファイルに記述されている必要なパッケージもインストールします。また、仮想環境を誤ってソース管理にコミットするのを防ぐために、仮想環境に.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 に設定されている場合、conda 環境を VS Code 統合ターミナルで自動的にアクティブ化することはできません。シェルを変更するには、統合ターミナル - ターミナルプロファイルを参照してください。
-
アクティブ化に使用する
conda
実行可能ファイルへのパスを手動で指定できます(バージョン 4.4 以降)。これを行うには、コマンドパレットを開き (⇧⌘P (Windows、Linux Ctrl+Shift+P))、Preferences: ユーザー設定を開く を実行します。次に、ユーザー設定の 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
) とともに、いくつかのアナコンダと CPython のインストールを示しています。
注: Windows では、VS Code が使用可能な conda 環境を検出するのに少し時間がかかる場合があります。そのプロセス中、環境へのパスの前に "(cached)" が表示されることがあります。このラベルは、VS Code が現在その環境のキャッシュされた情報を処理していることを示します。
VS Code でフォルダーまたはワークスペースを開き、リストからインタープリターを選択すると、Python 拡張機能はその情報を内部に保存します。これにより、ワークスペースを再度開いたときに同じインタープリターが使用されるようになります。
選択された環境は、Python コードの実行(Python: ターミナルで Python ファイルを実行 コマンドを使用)、エディターで .py
ファイルを開いている場合の言語サービス(オートコンプリート、構文チェック、Lint、フォーマットなど)、および ターミナル: 新しいターミナルの作成 コマンドでターミナルを開くために Python 拡張機能によって使用されます。後者の場合、VS Code は選択された環境を自動的にアクティブ化します。
ヒント: 選択された環境の自動アクティブ化を防ぐには、
settings.json
ファイルに"python.terminal.activateEnvironment": false
を追加します(既存の設定の兄弟として任意の場所に配置できます)。
ヒント: アクティブ化コマンドが「Activate.ps1 はデジタル署名されていません。現在のシステムでこのスクリプトを実行することはできません。」というメッセージを生成する場合は、スクリプトの実行を許可するように 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))、Preferences: ユーザー設定を開く を入力します。次に、ユーザー設定の 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
の第 1 レベルのサブフォルダーで仮想環境を検索します。- virtualenvwrapper の
~/.virtualenvs
フォルダーにある仮想環境。 - pyenv、Pipenv、および Poetry によって作成されたインタープリター。
- virtualenvwrapper で使用される
WORKON_HOME
で識別されるパスにある仮想環境。 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
形式のキーと値のペアを含むテキストファイルで、コメントには #
が使用されます。複数行の値はサポートされていませんが、以前に定義された環境変数への参照は許可されています。環境変数定義ファイルは、デバッグやツール実行(Lint、フォーマッター、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 は、ターミナル内でユーザーによって実行されるツール、および拡張機能がデバッグなど、ターミナルを介してルーティングされるユーザーのアクションを実行する場合に影響します。ただし、この場合、拡張機能が Lint やフォーマッターの使用など、ターミナルを介してルーティングされないアクションを実行する場合、この設定はモジュールの検索に影響を与えません。
次のステップ
- コードの編集 - Python のオートコンプリート、IntelliSense、フォーマット、およびリファクタリングについて説明します。
- デバッグ - Python のデバッグをローカルとリモートの両方で学習します。
- テスト - テスト環境を構成し、テストを検出、実行、およびデバッグします。
- 設定リファレンス - VS Code の Python 関連のすべての設定について説明します。
その他の Python リソース
- VS Code で Python を始める - VS Code でコードを編集、実行、およびデバッグする方法を学習します。
- 仮想環境とパッケージ (Python.org) - 仮想環境とパッケージの詳細について説明します。
- Python モジュールのインストール (Python.org) - Python モジュールをインストールする方法を学習します。
- Python チュートリアル (Python.org) - Python 言語の詳細について説明します。