Programmierpraktikum SoSe 2024, Bachelor Informatik, FU Berlin
ProPra2024 > Werkzeuge > Paketmanager > venv

venv: Separate Paketumgebungen für Python

Product

Ziel

Ich verstehe, was ein Python venv ist und habe mir eines für meine Arbeit am ProPra angelegt.

Hintergrund

Ein venv (virtual environment) ist ein "Sandkasten", in dem man nach Herzenslust Python-Pakete installieren kann, ohne die restliche Systemumgebung damit zu verändern.

Auf Debian-Systemen ist ein venv die einzige Möglichkeit, überhaupt mit pip Pakete installieren zu können, weil die restliche Systemumgebung vor Veränderungen geschützt sein soll, die der Debian-Paketmanager nicht kennt. Aber auch auf anderen Systemen wird jede ernsthafte Python-Entwickler_in für so ziemlich jeden (selbst kleinen) Entwicklungszweck ein eigenes venv anlegen.

Detailed

Arbeitsschritte

  1. Lesen Sie venv nach.

venv-Dateibaum und neues venv anlegen

  1. Wenn man mehrere venv hat, sollten diese in einem eigenen Unterdateibaum wohnen, damit nicht so viel Unordnung entsteht. Legen Sie einen solchen in Ihrem Home-Verzeichnis an: mkdir ~/venv.
  2. Legen Sie nun darin ein neues venv für ihre Arbeit am Programmierpraktikum an: python -m venv ~/venv/propra

venv propra aktivieren

  1. 1 Mit which kann man herausfinden, wo ein bestimmtes Kommando gefunden wird. Rufen Sie das für Python auf: which python.
  2. 2 Aktivieren Sie nun Ihr neues venv: source ~/venv/propra/bin/activate. Ihr Shell-Prompt müsste nun mit (propra) beginnen.
  3. 3 Überzeugen Sie sich, dass nun ein anderes Python-Executable aktiv ist: which python

Abkürzung in .bashrc einfügen und ausprobieren

  1. Den obigen source-Aufruf müssen Sie in jeder frischen Shell wiederholen. Das ist umständlich. Deshalb legen wir uns dafür jetzt ein bequemeres Shell-Kommando an: Öffnen Sie ihre .bashrc in ihrem Home-Verzeichnis und fügen Sie unten oder an geeigneter Stelle ungefähr folgende Shell-Funktion zu (mit angepassten Pfaden):
1
2
3
4
5
init_propra() {
    propra_dir=~/ws/propra
    cd $propra_dir
    source ~/venv/propra/bin/activate
}
  1. Deaktivieren Sie das venv (mit deactivate) und überzeugen Sie sich von der Wirkung (mit which python).
  2. Starten Sie eine neue Shell, damit das geänderte .bashrc eingelesen wird: bash
  3. 4 Aktivieren Sie das venv mit dem neuen Kommando: init_propra.
  4. 5 Überzeugen Sie sich von der Wirkung (mit which python).
  5. Rufen Sie ab jetzt, wann immer Sie mit einer neuen Shell am ProPra arbeiten wollen, init_propra auf.

Das gleiche Spiel kann man nun mit beliebig vielen anderen Python-Projekten wiederholen und hält deren Mengen installierter Pakete immer säuberlich getrennt voneinander und vom Basissystem.

venv in IDE verwenden

Mit den bisherigen Schritten können Sie ihr venv im Terminal verwenden. Ihre IDE verwendet aber aktuell noch ihr System-Environment und hat somit noch keinen Zugriff auf die im virtuellen Environment installierte Pakete.

Die Einrichtung ihres venv als Interpreter hängt von ihrer verwendeten Plattform und der installierten IDE ab. Daher verweisen wir hier auf die allgemeinen Anleitungen, die Sie ggf. für ihre Bedürfnisse anpassen müssen.

PyCharm

Richten Sie ihr venv in ihrer IDE mithilfe folgender Anleitung ein. Wählen Sie dabei ihr bereits angelegtes venv aus.
https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html.

Warnung:

Falls Sie PyCharm Community Edition unter Windows benutzen, müssen Sie noch ein zweites venv einrichten, damit Sie ihren Code auch über die IDE in Windows ausführen können. Dieses zweite venv sollte in einem geeigneten Ordner außerhalb des WSL liegen (z.B. C:\User\<Benutzername>\venv), um die beiden Environments besser auseinanderhalten zu können.

Damit sich beide Interpreter gleich verhalten, müssen neue Pakete immer in beiden venv installiert werden. Achten Sie darauf in Aufgabe pip und bei allen Aufgaben, die die Installation weiterer Pakete voraussetzen. Die Verwendung einer Datei requirements.txt kann dabei helfen, ihre benötigten Abhängigkeiten konsistent zu halten.

Visual Studio Code

Richten Sie ihr venv in ihrer IDE mithilfe folgender Anleitung ein. Wählen Sie dabei ihr bereits angelegtes venv aus.
https://code.visualstudio.com/docs/python/environments#_working-with-python-interpreters.

Trace

Abgabe

Geben Sie ein Kommandoprotokoll ab, das genau nur die Eingaben und Ausgaben der obigen Kommandos 1, 2, … enthält. Entfernen Sie vor Abgabe eventuelle Fehlversuche und sonstige zusätzliche Kommandos aus dem Protokoll.

Zeigen Sie zusätzlich ihrem Tutor, dass sie das venv in ihrer IDE eingerichtet haben.
Wenn Sie keinen Laptop benutzen, machen Sie einen Screenshot von der Einstellung in ihrer IDE, in dem klar erkennbar ist, dass ihr venv eingerichtet ist.