Hilfe bei virtuel environment

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

Ich möchte jetzt eure Vorschläge zu meinem, an anderer Stelle, vorgestellten Projektes des Rechenduells in Angriff nehmen. Dazu muss ich Biblitoheken installieren, die ich in meinem bestehenden Rechentrainer.app Projekt nicht benötige und denke, jetzt ist es Zeit, mich mit VE zu beschäftigen.
Habe ich das richtig verstanden, dass ich auch bei meinem bestehenden Projekt jetzt noch ein VE einrichten kann oder hätte ich das von Anfang an machen müssen? Und, wenn ich das eingerichtet habe, wie bette ich ein neues Projekt in ein neues VE ein? Einfach ein neues Projekt öffnen und "venv" ausführen?
Benutzeravatar
DeaD_EyE
User
Beiträge: 1217
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Man kann das venv entweder mittels source aktivieren:

Code: Alles auswählen

source /home/USER/venv_rechentrainer/bin/activate
Oder man führt einfach direkt den Python-Interpreter mit dem Programm aus:

Code: Alles auswählen

source /home/USER/venv_rechentrainer/bin/pyhon /home/USER/PROGRAMM/main.py
Die Installation des venv ist auch recht einfach:

Code: Alles auswählen

python -m venv /home/USER/venv_rechentrainer
Die Installation der Pakete kann man manuell mit pip vornehmen. Das Aktivieren nicht vergessen, bevor Befehle wie pip oder python mit dem venv verwendet werden sollen. Mach das erstmal mit dem venv, später kannst du ggf. auf etwas umsteigen, dass all diese Vorgänge automatisiert: Pakete aktualisieren, Code-Formatierung, Tests ausführen usw.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Vielen Dank schonmal. Aber habe Verständnis für jemanden der das noch nie gemacht hat:
Ich bin unsicher mit der Benennung. Der code, den ich schreibe, liegt in meinen Daten in einem Ordner "rechentrainer.app".
Der Code von Python liegt unter "C:\Users\Pit\AppData\Local\Programms"?
Muss ich in deinem Code "/USER/venv_rechentrainer/bin/pyhon" das "rechentrainer" anpassen oder erstellt der Code eine VE mit dem Namen "rechentrainer"?
Und deinen erstgenannten Code führe ich z.B. mittels cmd aus oder wahlweise den zweiten im Terminal von VBCode?

Noch eine Zusatzfrage:
Der Code von Django liegt dann wiederum als Extention von VSBasic im Ordner "...\Local\Programms\Microsoft VS Code" und/oder Im Ordner von Python?
Benutzeravatar
__blackjack__
User
Beiträge: 13997
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Das hätte man jetzt aber auch einfach ausprobieren können:

Code: Alles auswählen

$ ls test_venv
ls: cannot access 'test_venv': No such file or directory
$ python3 -m venv test_venv
$ ls test_venv
bin  include  lib  lib64  pyvenv.cfg
Das Verzeichnis wird also erstellt und muss/darf nicht bereits existieren. Nach dem erstellen sind die entsprechenden Programme im ``bin/``-Verzeichnis in dem venv-Verzeichnis.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Prima!
Das habe ich jetzt ausprobiert und habe innerhalb meines Codes ein "test_venv" Verzeichnis und das kümmert sich um alles? Habe ich nicht gelesen, dass sich jetzt mein Cursoranzeige ändern müsste - oder muss ich das jetzt erst aktivieren?
Und kann ich das "test" jetzt umbenennen oder muss ich es entfernen und einen sinnvollen Namen geben?
... und mit meinem geplanten neuen Projekt mache ich das auch so und die kommen sich dann nicht in die Quere und benutzen jeweils eigenen Umgebungen/Bibliotheken?
Benutzeravatar
DeaD_EyE
User
Beiträge: 1217
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Pitwheazle hat geschrieben: Mittwoch 13. November 2024, 18:20 Und kann ich das "test" jetzt umbenennen oder muss ich es entfernen und einen sinnvollen Namen geben?
Weißt du noch in einem halben Jahr, was du gemacht hast? Ich benenne Dinge so, dass ich sofort weiß, worum es geht. Das existierende venv kann, soweit ich weiß, nicht umbenannt werden. Erstell einfach ein neues mit dem gewünschten Namen.

Es gibt noch andere Tools, aber zuerst solltest du mit venv warm werden.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
sparrow
User
Beiträge: 4525
Registriert: Freitag 17. April 2009, 10:28

All das wird auch in der Dokumentation sehr ausführlich erklärt und beschrieben.

STRG+F "A virtual environment is".
Benutzeravatar
noisefloor
User
Beiträge: 4172
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Zu venv gibt es auch einen Kapitel im Python Tutorial und dessen deutscher Übersetzung: https://pytude.readthedocs.io/de/latest/venv/.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Vielen Dank für eure Hinweise.
sparrow hat geschrieben: Donnerstag 14. November 2024, 07:19 All das wird auch in der Dokumentation sehr ausführlich erklärt und beschrieben.
STRG+F "A virtual environment is".
Die Beschreibung hat mich wieder etwas erschlagen und ich habe sie nach einiger Zeit wieder zugemacht.
Dann habe ich diese hier https://docs.python.org/3/tutorial/venv.html gefunden, damit kann ich was anfangen.
... und das hier
noisefloor hat geschrieben: Donnerstag 14. November 2024, 15:49 Zu venv gibt es auch einen Kapitel im Python Tutorial und dessen deutscher Übersetzung: https://pytude.readthedocs.io/de/latest/venv/.
Gruß, noisefloor
... ist ja wohl die Übersetzung dazu.
Ich habe das hier
__blackjack__ hat geschrieben: Mittwoch 13. November 2024, 18:10 @Pitwheazle: Das hätte man jetzt aber auch einfach ausprobieren können:

Code: Alles auswählen

$ ls test_venv
ls: cannot access 'test_venv': No such file or directory
$ python3 -m venv test_venv
$ ls test_venv
bin  include  lib  lib64  pyvenv.cfg
Das Verzeichnis wird also erstellt und muss/darf nicht bereits existieren. Nach dem erstellen sind die entsprechenden Programme im ``bin/``-Verzeichnis in dem venv-Verzeichnis.
, wie bereits berichtet, schon mal ausprobiert und, wie ebenfalls beschrieben, wollte ich dieses wieder entfernen um den Namen "test" loszuwerden. Dann habe ich aber festgestellt, dass "manage.py shell schon mal nicht mehr funktionierte.
Ich habe den Ordner einfach entfernt und dann ging das wieder.
Es wäre schön, wenn ihr mir jetzt nochmal helft und mir sagt, ob das, was ich jetzt zu verstehen glaube, so stimmt:
Mit dem VE wird weder der Code der Pythoninstallation in meinem System, noch der Code in meinem Projekt geändert. Es wird nur festgelegt, auf welche Pythonversion und welche Bibliotheken aus meinem Projet zugegriffen wird. So ähnlich wie gitignore festlegt, was gespeichert wird.
Aber das:
DeaD_EyE hat geschrieben: Mittwoch 13. November 2024, 17:06 Man kann das venv entweder mittels source aktivieren:

Code: Alles auswählen

source /home/USER/venv_rechentrainer/bin/activate
Oder man führt einfach direkt den Python-Interpreter mit dem Programm aus:

Code: Alles auswählen

source /home/USER/venv_rechentrainer/bin/pyhon /home/USER/PROGRAMM/main.py
Die Installation des venv ist auch recht einfach:

Code: Alles auswählen

python -m venv /home/USER/venv_rechentrainer
Die Installation der Pakete kann man manuell mit pip vornehmen. Das Aktivieren nicht vergessen, bevor Befehle wie pip oder python mit dem venv verwendet werden sollen. Mach das erstmal mit dem venv, später kannst du ggf. auf etwas umsteigen, dass all diese Vorgänge automatisiert: Pakete aktualisieren, Code-Formatierung, Tests ausführen usw.
klingt doch viel komplizierter als:

Code: Alles auswählen

python -m venv tutorial-env
... wo liegt hier der Unterschied?

Aber noch was:
Ich wollte jetzt das, an anderer Stelle beschriebene, Projekt mit dem Rechenduell mit der direkten Auswertung ohne Beamer und Geschrei in Angriff nehmen und dafür die Bibliotheken für chanels und websockets ergänzen. Diese stören aber doch mein bisheriges Projekt nicht weiter oder habe ich da was übersehen?
Benutzeravatar
Dennis89
User
Beiträge: 1516
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

das klingt nicht komplizierter, dass ist das Gleiche.

Code: Alles auswählen

python -m venv tutorial-env
Damit erstellst du in dem Verzeichnis in dem du dich befindest eine virtuelle Entwicklungsumgebung. Den Ordner dazu nennt sich in dem Fall `tutorial-env`. In diesem befindet sich ein Ordner `bin` und darin eine ausführbare Datei `activate`. Wenn du diese ausführst ist deine Umgebung aktivert und wenn du jetzt etwas mit `pip` installierst, wird es nur für diese Umgebung installiert und wenn du etwas mit `python` ausführst, dann wird das Python mit den eben installierten Bibliotheken ausgeführt.

Deine letzte Frage verstehe ich nicht ganz. Wenn du zu deinem Projekt weitere Bibliotheken installierst, dann sollte dass auf den Programmablauf keinen Einfluss haben.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
noisefloor
User
Beiträge: 4172
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Mit dem VE wird weder der Code der Pythoninstallation in meinem System, noch der Code in meinem Projekt geändert. Es wird nur festgelegt, auf welche Pythonversion und welche Bibliotheken aus meinem Projet zugegriffen wird.
Korrekt. Mit Hilfe eines venvs kann man quasi beliebig viele Python-Installation unabhängig voneinander nebeneinander haben und darin dann beliebige Module nachinstallieren. BTW: wirklich niemand kürzt virtual environment mit VE ab... entweder ausschreiben oder venv schreiben.
... wo liegt hier der Unterschied?
Absoluter Pfad vs. relativer Pfad.
und dafür die Bibliotheken für chanels und websockets ergänzen. Diese stören aber doch mein bisheriges Projekt nicht weiter oder habe ich da was übersehen?
Du kannst beliebig viele Python-Module nachinstallieren, stören tut da nichts. Wenn du die Module nicht importierst "sieht" dein Projekt die doch gar nicht. Aber wieso Channels und Websockets? Channels implementiert Websockets für Django.

Gruß, noisefloor
Antworten