Was genau ist venv?

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Wieder was neues:
eine virtuelle Maschine ist ein Computer im Computer, der mit einem eigenen Betriebssystem unabhängig des Hauptbetriebssystems des Computers läuft, also Linux innerhalb von Windows. Aber nur innerhalb, das heißt, ich könnte das Hauptbetriebssytem nicht entfernen. Stimmt das soweit?
Das virtuelenv bzw. venv sind dahingehend kein eigenständiges Betriebssystem, man kann nur verschiedenen Python Installationen und auch darin installierte Bibliotheken voneinander trennen. Habe ich das auch soweit verstanden?
Was ich jetzt sicher noch nicht verstanden habe, ist, wie man die Projektdateien in eine virtuelle Umgebung einbettet. Müssen die Dateien, in den venv Ordner, oder können die woanders sein? Meine Ordnerstruktur in uber.space sieht so aus:
Bild
@whitie hat mir geholfen, eine Bibliothek zu installieren, mit

Code: Alles auswählen

pip3 install --user  py_expression_eval
... wenn ich das richtig verstanden habe, ist diese Bibliothek jetzt nicht in venv sondern irgendwo anders.
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein virtualenv isoliert nur die installierten Pakete voneinander. So das du mehrere Projekte mit verschiedenen Mengen an ansonsten im Konflikt stehenden Paketen installieren kannst.

Und da muss nichts kuenstlich rein. Deine Abhaengigkeiten werden da rein installiert, so wie sie das sonst auch "irgendwo" werden (also zB in site-packages, oder ~/.local/... etc pp). Dein eigentliches Projekt muss das nicht. Das sollte einfach nur mit dem venv-Python gestartet werden, damit die installierten Pakete verfuegbar werden. Das ist ja der grundlegende Mechanismus. Ein Python-Interpreter, der so konfiguriert ist, dass er diese isolierten Pakete benutzt.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Danke für die Info. in dem venv sind also nur die Pakete drin aber nicht verschiedene Python Versionen. Und ich gehe dann davon aus, dass das bei uber.space automatisch passiert und erinnere mich, dass ich dieses venv Ding am Anfang beim Erstellen des Projektes machen musste.
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was genau das bei uberspace heisst, kann ich nicht sagen. Aber ja, ein venv == eine Python version.
Antworten