HOWTO · Python
Python で仮想環境を一覧表示する
この記事では、Python の仮想環境とは何か、およびそれらを一覧表示するいくつかのコマンドについて説明します。
このページの内容
virtualenvwrapperで管理する環境には、引数なしの lsvirtualenv または workon を使います。Conda環境には conda env list を使います。環境の一覧表示に有効化は必要ありませんが、使用する管理ツールをターミナルで利用できる必要があります。
Pythonで仮想環境を一覧表示する
コンピューター上のすべての環境を一覧表示する共通コマンドは、Pythonにはありません。適切な方法は、環境の作成方法や管理方法によって異なります。
| 環境ツール | 一覧表示の方法 | 対象範囲 |
|---|---|---|
| virtualenvwrapper | lsvirtualenv または workon |
設定済みの WORKON_HOME ディレクトリにある環境 |
| Conda | conda env list |
現在のCondaインストールが把握している環境 |
通常の venv または virtualenv |
作成したディレクトリを確認 | すべての環境をまとめて登録する仕組みはありません |
仮想環境を使うと、プロジェクトごとに専用のPython環境とインストール済みパッケージを用意できます。たとえば、Project1とProject2で異なるNumPyのバージョンを使い、共有インストールを何度も切り替えずに済みます。これにより依存関係の競合を減らせますが、同じ環境に互換性のないパッケージをインストールすることは可能です。
通常の venv 環境を探すには、プロジェクトのディレクトリ内にある .venv などのフォルダーを確認します。pyvenv.cfg ファイルは環境を見つける目印になりますが、ファイルがあるだけでは環境が今も動作するとは限りません。
次の自己完結型Python例では、一時環境を2つ作成して名前を一覧表示し、処理後に削除します。検索対象は一時親ディレクトリだけで、project1とproject2を別々の行に出力します。
このセクションのコードと表示されるラベルや出力は英語のままです。
from pathlib import Path
from tempfile import TemporaryDirectory
import venv
with TemporaryDirectory() as directory:
root = Path(directory)
for name in ("project1", "project2"):
venv.EnvBuilder(with_pip=False).create(root / name)
for folder in sorted(root.iterdir()):
if folder.is_dir() and (folder / "pyvenv.cfg").is_file():
print(folder.name)
project1
project2
自分の環境を調べる場合は、一時環境を作成する代わりに、環境が置かれていると分かっている親ディレクトリを使います。この目印による確認方法は venv 形式のディレクトリ向けです。Conda環境にはConda専用の一覧表示コマンドを使ってください。
virtualenvwrapperで環境を一覧表示する
lsvirtualenv コマンドは、virtualenv で作成した環境を整理するシェルツール集 virtualenvwrapper に含まれています。virtualenv をインストールしただけでは、これらのラッパーコマンドは使えるようになりません。
LinuxまたはmacOSでBashを設定する場合は、公式のvirtualenvwrapperインストールおよびシェル初期化ガイドに従ってください。基本的な手順は次のとおりです。
- 必要であれば、pipによるインストールが許可されているPythonを使って
python3 -m pip install virtualenv virtualenvwrapperを実行し、ツールをインストールします。 - 共有の親ディレクトリを決めます。たとえば
export WORKON_HOME="$HOME/.virtualenvs"で設定し、mkdir -p "$WORKON_HOME"で作成します。 - インストールされた
virtualenvwrapper.shスクリプトを探し、source /actual/path/to/virtualenvwrapper.shで現在のシェルに読み込みます。パスは実際のインストール先に置き換えてください。 lsvirtualenvを実行します。名前だけを簡潔に表示するにはlsvirtualenv -bを使います。既存環境の一覧表示に、新しい環境の作成は必要ありません。管理対象の環境を作成する必要がある場合はmkvirtualenv vEnv1を使います。
公式のコマンドリファレンスでは、lsvirtualenv と一覧表示オプションおよび、環境の一覧表示や有効化に使うworkonが説明されています。
ここに示したセットアップコマンドは、必要なツールと互換性のあるシェルがある場合に使う手順であり、実行済みではありません。インストールしただけでは、現在のシェルは初期化されません。次回以降のセッションでも使うには、ディレクトリの設定とスクリプトの読み込みコマンドを適切なシェル起動ファイルに追加します。Windows向けのネイティブな移植版では設定方法が異なるため、このBashの手順をコマンドプロンプトやPowerShellにそのまま適用しないでください。
コマンドが使えない場合は、インストールとシェルの初期化を確認してください。コマンドは動くのに環境が表示されない場合は、WORKON_HOME を調べます。Bashでは printf '%s\n' "$WORKON_HOME" を実行して設定値を改行付きで表示し、続けて ls -la "$WORKON_HOME" で設定されたディレクトリを確認します。
WORKON_HOME には、個々の環境のフォルダーではなく、環境フォルダーを格納する親ディレクトリを設定します。既定の場所はプラットフォーム、移植版、設定によって異なるため、Windows形式の Envs ディレクトリが常に使われるわけではありません。この変数を変更するとラッパーが参照する場所は変わりますが、既存の環境が移動したり、別の場所にあるプロジェクト内のフォルダーが見つかったりするわけではありません。
Conda環境を一覧表示する
conda で作成した環境を確認するには、初期化済みのシェルやAnaconda Promptなど、Condaを利用できるターミナルで conda env list を実行します。CondaはAnacondaやMinicondaなどのディストリビューションから利用できます。
conda info --envs と conda info -e も同じ環境一覧を表示します。詳しくは、公式の conda env list リファレンスと conda info のオプションを参照してください。一覧には環境の場所と通常は名前が表示され、現在有効な環境にはアスタリスクが付きます。独自のパスに作成した環境は、主にパスで識別されることがあります。名前や場所はインストール環境によって異なります。
新しい環境を作らなくても一覧表示できます。新しいプロジェクト用に環境が必要であれば、conda create --name vEnv2 python でPythonを含む名前付き環境を作成できます。vEnv2 は希望する名前に置き換えてください。この手順は実行済みではなく、依存関係に応じてパッケージをダウンロードし、確認を求める場合があります。
Condaの一覧表示は、すべての venv 環境やvirtualenvwrapper環境を検索するものではありません。想定したConda環境が見つからない場合は、意図したCondaインストールとユーザーアカウントを使っているか確認してください。コマンド自体が使えない場合は、ディストリビューションのプロンプトを開くか、シェル用にCondaを初期化してから再試行します。ここではこれらの管理コマンドを実行していないため、特定のセッションでの出力は示していません。
workonで環境を一覧表示する
workon コマンドもvirtualenvwrapperに含まれています。前述のセットアップを済ませたら、引数を付けずに workon を入力すると、WORKON_HOME にある利用可能な環境が一覧表示されます。一覧表示中に各環境が有効化されることはありません。
環境名を追加すると処理が変わります。workon vEnv1 は、現在のシェルでその管理対象環境を有効化します。vEnv1 は一覧に表示された名前に置き換えてください。この有効化手順は実行済みではなく、既存の管理対象環境が必要です。
workon と lsvirtualenv のどちらにも環境が表示されない場合は、作り直す前に共有のディレクトリ設定を確認してください。任意のプロジェクトディレクトリで virtualenv vEnv1 により作成したフォルダーは、自動的にラッパーから見えるようにはなりません。実際に使った管理ツールと環境の場所に合った一覧表示方法を選んでください。