HOWTO · Python

Virtuelle Umgebungen in Python auflisten

In diesem Artikel diskutieren wir, was eine virtuelle Umgebung in Python ist, und einige Befehle, um sie aufzulisten.

Auf dieser Seite

Verwenden Sie lsvirtualenv oder workon ohne Argumente für Umgebungen, die von virtualenvwrapper verwaltet werden. Für Conda-Umgebungen verwenden Sie conda env list. Zum Auflisten müssen Sie eine Umgebung nicht aktivieren; der passende Manager muss jedoch in Ihrem Terminal verfügbar sein.

Virtuelle Umgebungen in Python auflisten

Es gibt keinen allgemeinen Python-Befehl, der alle Umgebungen auf Ihrem Computer auflistet. Welche Methode passt, hängt davon ab, wie Sie die Umgebungen erstellt und organisiert haben:

Umgebungstool Auflisten mit Geltungsbereich
virtualenvwrapper lsvirtualenv oder workon Umgebungen im konfigurierten Verzeichnis WORKON_HOME
Conda conda env list Umgebungen, die der aktuellen Conda-Installation bekannt sind
Einfaches venv oder virtualenv Die Verzeichnisse durchsuchen, in denen Sie sie erstellt haben Kein gemeinsames Verzeichnis aller Umgebungen

Eine virtuelle Umgebung stellt einem Projekt eine eigene Python-Umgebung mit eigenen installierten Paketen bereit. So können Project1 und Project2 beispielsweise unterschiedliche NumPy-Versionen verwenden, ohne dieselbe Installation wiederholt ändern zu müssen. Das verringert Abhängigkeitskonflikte, schließt aber nicht aus, dass innerhalb einer Umgebung inkompatible Pakete installiert werden.

Suchen Sie bei einfachen venv-Umgebungen in Ihren Projektverzeichnissen nach Ordnern wie .venv. Eine Datei namens pyvenv.cfg ist ein nützlicher Hinweis; ihre bloße Anwesenheit beweist jedoch nicht, dass die Umgebung noch funktioniert.

Das eigenständige Python-Beispiel erstellt zwei temporäre Umgebungen, listet ihre Namen auf und räumt sie anschließend wieder auf. Es durchsucht nur das temporäre übergeordnete Verzeichnis und gibt project1 und project2 in getrennten Zeilen aus.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

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

Um Ihre eigenen Umgebungen zu prüfen, verwenden Sie deren bekanntes übergeordnetes Verzeichnis, statt temporäre Umgebungen anzulegen. Diese Suche anhand eines Markers eignet sich für Verzeichnisse im Stil von venv; für Conda-Umgebungen verwenden Sie den eigenen Auflistungsbefehl von Conda.

Umgebungen mit virtualenvwrapper auflisten

Der Befehl lsvirtualenv gehört zu virtualenvwrapper, einer Sammlung von Shell-Werkzeugen zum Organisieren von Umgebungen, die mit virtualenv erstellt wurden. Wenn Sie nur virtualenv installieren, stehen diese Wrapper-Befehle nicht zur Verfügung.

Eine Bash-Einrichtung unter Linux oder macOS finden Sie in der offiziellen Anleitung zur Installation und Shell-Initialisierung von virtualenvwrapper. Der grundlegende Ablauf:

  1. Installieren Sie die Werkzeuge bei Bedarf mit python3 -m pip install virtualenv virtualenvwrapper über eine Python-Installation, die pip-Installationen zulässt.
  2. Wählen Sie ein gemeinsames übergeordnetes Verzeichnis, zum Beispiel mit export WORKON_HOME="$HOME/.virtualenvs", und erstellen Sie es anschließend mit mkdir -p "$WORKON_HOME".
  3. Suchen Sie das installierte Skript virtualenvwrapper.sh und laden Sie es mit source /actual/path/to/virtualenvwrapper.sh in Ihre aktuelle Shell. Ersetzen Sie den Pfad durch den tatsächlichen Installationsort.
  4. Führen Sie lsvirtualenv aus oder verwenden Sie lsvirtualenv -b, um eine kurze Namensliste zu erhalten. Zum Auflisten vorhandener Umgebungen müssen Sie keine weitere erstellen. Bei Bedarf erstellen Sie eine verwaltete Umgebung mit mkvirtualenv vEnv1.

Die offizielle Befehlsreferenz beschreibt lsvirtualenv und seine Auflistungsoptionen sowie workon zum Auflisten oder Aktivieren von Umgebungen.

Diese Einrichtungsbefehle sind nicht ausgeführte Anweisungen. Sie setzen die installierten Werkzeuge und eine kompatible Shell voraus. Die Installation allein initialisiert Ihre aktuelle Shell nicht. Wenn Sie die Einstellungen in künftigen Sitzungen nutzen möchten, fügen Sie die Verzeichniseinstellung und den Befehl zum Laden des Skripts in die passende Shell-Startdatei ein. Native Windows-Portierungen werden anders eingerichtet; nehmen Sie nicht an, dass diese Bash-Schritte für die Eingabeaufforderung oder PowerShell gelten.

Falls der Befehl nicht verfügbar ist, prüfen Sie die Installation und die Shell-Initialisierung. Wird der Befehl ausgeführt, listet aber keine Umgebungen auf, überprüfen Sie WORKON_HOME: Geben Sie in Bash mit printf '%s\n' "$WORKON_HOME" den Pfad aus und sehen Sie sich das konfigurierte Verzeichnis anschließend mit ls -la "$WORKON_HOME" an.

Setzen Sie WORKON_HOME auf das übergeordnete Verzeichnis Ihrer Umgebungsordner, nicht auf den Ordner einer einzelnen Umgebung. Die Standardpfade hängen von Plattform, Portierung und Konfiguration ab; ein Windows-Verzeichnis namens Envs ist nicht überall üblich. Eine Änderung dieser Variable beeinflusst, wo der Wrapper sucht. Sie verschiebt keine vorhandenen Umgebungen und findet auch keine Projektordner an anderen Speicherorten.

Conda-Umgebungen auflisten

Wenn Sie Umgebungen mit conda erstellt haben, führen Sie conda env list in einem Terminal aus, in dem Conda verfügbar ist, etwa in einer initialisierten Shell oder der Anaconda Prompt. Conda ist unter anderem in den Distributionen Anaconda und Miniconda enthalten.

Die Alternativen conda info --envs und conda info -e zeigen dieselbe Umgebungsliste an. Siehe dazu die offizielle Referenz für conda env list und die Optionen von conda info. Die Liste zeigt die Speicherorte und meist auch die Namen der Umgebungen; die aktive Umgebung ist mit einem Sternchen markiert. Umgebungen an benutzerdefinierten Pfaden werden möglicherweise hauptsächlich anhand ihres Pfads angezeigt. Namen und Speicherorte hängen von Ihrer Installation ab.

Sie können Umgebungen auflisten, ohne neue zu erstellen. Falls Sie für ein neues Projekt eine benötigen, erstellt conda create --name vEnv2 python eine benannte Umgebung mit Python. Ersetzen Sie den Namen durch den gewünschten Namen. Diese nicht ausgeführte, von Abhängigkeiten abhängige Anweisung kann Pakete herunterladen und eine Bestätigung anfordern.

Die Conda-Liste durchsucht nicht alle Umgebungen, die mit venv oder virtualenvwrapper erstellt wurden. Fehlt eine erwartete Conda-Umgebung, prüfen Sie, ob Sie die vorgesehene Conda-Installation und das richtige Benutzerkonto verwenden. Ist der Befehl selbst nicht verfügbar, öffnen Sie die Eingabeaufforderung der Distribution oder initialisieren Sie Conda für Ihre Shell, bevor Sie es erneut versuchen. Diese Manager-Befehle wurden hier nicht ausgeführt; es wird keine sitzungsspezifische Ausgabe behauptet.

Umgebungen mit workon auflisten

Auch der Befehl workon gehört zu virtualenvwrapper. Führen Sie nach der oben beschriebenen Einrichtung des Wrappers workon ohne Argumente aus, um die verfügbaren Umgebungen in WORKON_HOME aufzulisten. Dabei wird keine der Umgebungen aktiviert.

Mit einem Namen ändert sich die Funktion: workon vEnv1 aktiviert diese verwaltete Umgebung in der aktuellen Shell. Ersetzen Sie vEnv1 durch einen Namen aus Ihrer Liste. Diese Aktivierungsanweisung wurde nicht ausgeführt und setzt eine vorhandene verwaltete Umgebung voraus.

Wenn workon und lsvirtualenv eine Umgebung beide nicht anzeigen, prüfen Sie zuerst die gemeinsame Verzeichniskonfiguration, bevor Sie etwas neu erstellen. Ein Ordner, den Sie mit virtualenv vEnv1 in einem beliebigen Projektverzeichnis angelegt haben, wird dadurch nicht automatisch für den Wrapper sichtbar. Verwenden Sie die Auflistungsmethode, die zum tatsächlich verwendeten Manager und Speicherort passt.