VS Code での Python 環境
Python の「環境」とは、インタープリターとインストールされている任意の数のパッケージから構成される、Python プログラムが実行されるコンテキストです。
注: Python プログラミング言語にさらに慣れたい場合は、Python の追加リソース を確認してください。
Python 環境の種類
グローバル環境
既定では、インストールされている Python インタープリターは、それぞれの グローバル環境 で実行されます。たとえば、新しいターミナルで (Python のインストール方法に応じて) python
、python3
、または py
を実行するだけで、そのインタープリターのグローバル環境で実行していることになります。インストールまたはアンインストールするパッケージは、グローバル環境と、その中で実行するすべてのプログラムに影響します。
ヒント: 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: Create Environment コマンドを検索して選択します。
コマンドにより、環境の種類のリスト (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 environments をお読みください。
その他の注意点
-
VS Code の実行中に新しい conda 環境を作成した場合は、Python: Select Interpreter ウィンドウの右上にある更新アイコンを使用してください。そうしないと、環境が見つからない場合があります。
-
環境がシェルから正しく設定されていることを確認するには、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)) を開いて、Preferences: Open User Settings を実行します。次に、ユーザー設定の Python 拡張機能セクションにあるpython.condaPath
に適切なパスを設定します。
Python インタープリターの操作
環境を選択してアクティブ化する
Python 拡張機能は、ワークスペースに最適と見なす環境を見つけて選択しようとします。特定の環境を選択したい場合は、コマンド パレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) から Python: Select Interpreter コマンドを使用します。
注: Python 拡張機能がインタープリターを見つけられない場合、警告が表示されます。macOS 12.2 以前では、OS にインストールされている Python インタープリターを使用している場合にも警告が表示されます。これは互換性の問題があることが知られているためです。どちらの場合も、ユーザー settings で
python.disableInstallationCheck
をtrue
に設定することで、これらの警告を無効にできます。
Python: Select Interpreter コマンドは、利用可能なグローバル環境、conda 環境、仮想環境のリストを表示します。(これらの環境の種類の区別を含む詳細については、拡張機能が環境を検索する場所 のセクションを参照してください)。たとえば、次の画像は、いくつかの Anaconda と CPython のインストール、およびワークスペース フォルダー内にある conda 環境と仮想環境 (env
) を示しています。
注: Windows では、VS Code が利用可能な conda 環境を検出するのに少し時間がかかることがあります。そのプロセス中に、環境へのパスの前に「(cached)」と表示されることがあります。このラベルは、VS Code が現在その環境のキャッシュされた情報で動作していることを示します。
VS Code でフォルダーまたはワークスペースを開いていて、リストからインタープリターを選択すると、Python 拡張機能はその情報を内部的に保存します。これにより、ワークスペースを再度開いたときに同じインタープリターが使用されるようになります。
選択された環境は、Python 拡張機能によって Python コードの実行 (Python: Run Python File in Terminal コマンドを使用)、エディターで .py
ファイルを開いているときの言語サービス (オートコンプリート、構文チェック、lint 化、フォーマットなど) の提供、および Terminal: Create New Terminal コマンドによるターミナルの開始に使用されます。後者の場合、VS Code は選択された環境を自動的にアクティブ化します。
ヒント: 選択した環境の自動アクティブ化を防ぐには、
settings.json
ファイルに"python.terminal.activateEnvironment": false
を追加します (既存の設定の兄弟としてどこにでも配置できます)。
ヒント: アクティブ化コマンドが「Activate.ps1 はデジタル署名されていません。現在のシステムではこのスクリプトを実行できません。」というメッセージを生成する場合、一時的に PowerShell の実行ポリシーを変更してスクリプトの実行を許可する必要があります (PowerShell ドキュメントの 実行ポリシーについて を参照):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
注: 既定では、VS Code はコードをデバッグするときにワークスペース用に選択されたインタープリターを使用します。デバッグ構成の
python
プロパティに別のパスを指定することで、この動作をオーバーライドできます。デバッグ環境の選択 を参照してください。
選択されたインタープリターのバージョンは、ステータス バーの右側に表示されます。
ステータス バーには、インタープリターが選択されていない場合も反映されます。
いずれの場合も、ステータス バーのこの領域をクリックすると、Python: Select Interpreter コマンドの便利なショートカットになります。
ヒント: VS Code が仮想環境を認識するのに問題がある場合は、原因の特定に役立つように issue を報告してください。
インタープリターを手動で指定する
VS Code が使用したいインタープリターを自動的に見つけられない場合は、ファイル システムでインタープリターを参照するか、手動でパスを指定できます。
これを行うには、Python: Select Interpreter コマンドを実行し、インタープリター リストの上部に表示される Enter interpreter path... オプションを選択します。
その後、テキストボックスに Python インタープリターのフルパスを直接入力するか (例: ".venv/Scripts/python.exe")、Find... ボタンを選択してファイルシステムをブラウズし、選択したい Python 実行可能ファイルを見つけることができます。
ワークスペースを初めて開いたときに使用される既定のインタープリターを手動で指定したい場合は、python.defaultInterpreterPath
設定のエントリを作成または変更できます。
注:
python.defaultInterpreterPath
設定への変更は、インタープリターが既にワークスペースに選択された後には反映されません。最初のインタープリターがワークスペースに選択されると、この設定への変更は無視されます。
さらに、すべての Python アプリケーションに既定のインタープリターを設定したい場合は、ユーザー設定内に python.defaultInterpreterPath
のエントリを手動で追加できます。そのためには、コマンド パレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を開き、Preferences: Open User Settings を入力します。次に、ユーザー設定の 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 によって作成されたインタープリター。
WORKON_HOME
で指定されたパスにある仮想環境 (virtualenvwrapper で使用)。conda env list
で見つかった conda 環境。インタープリターを持たない conda 環境は、選択時にインストールされます。- ワークスペース フォルダー下の direnv のための
.direnv
フォルダーにインストールされたインタープリター。
環境とターミナル ウィンドウ
Python: Select Interpreter を使用した後、ファイルを右クリックして Python: Run Python File in Terminal を選択すると、そのインタープリターが適用されます。また、python.terminal.activateEnvironment
設定を false
に変更しない限り、Terminal: Create New Terminal コマンドを使用すると環境が自動的にアクティブ化されます。
特定の Python 環境がアクティブ化されているシェルから VS Code を起動しても、既定の統合ターミナルでその環境が自動的にアクティブ化されるわけではないことに注意してください。
注: PowerShell が統合シェルとして設定されている場合、conda 環境は統合ターミナルで自動的にアクティブ化できません。シェルを変更する方法については、統合ターミナル - ターミナルプロファイル を参照してください。
Python: Select Interpreter コマンドでインタープリターを変更しても、すでに開いているターミナル パネルには影響しません。したがって、分割ターミナルで別々の環境をアクティブ化できます。最初のインタープリターを選択し、そのためのターミナルを作成し、別のインタープリターを選択してから、ターミナル タイトル バーの分割ボタン (⌘\ (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 言語について詳しく学びます。