Seite 1 von 1
Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 19:34
von joernius
Hallo zusammen,
das System ist ein Raspberru PI V3 mit dem Debian-Derivat Raspbian GNU/Linux 10 Buster.
Ich habe mit 'mkvirtualenv env_dir -p python3' eine virtuelle Umgebung erstellt.
Diese kann ich 'workon env_dir' oder 'source env_dir/bin/activate' aktivieren.
Ich möchte, dass ein in der Umgebung installierte Python-Skript nach einem Geräte-Start ausgeführt werden kann, also dass dieses Enviroment mit Autostart aktiviert werden kann.
Meine Versuche, den Aufrufe workon oder activate in ein Skript zu packen gelang mir leider nicht.
Wie kann ich diese Umgebung bei Start des Raspberry PI aktivieren, um die Skripte in dieser Umgebung auszuführen?
Viele Grüße
Jörn
Re: Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 20:15
von nezzcarth
Das Aktivieren von virtuellen Umgebungen ist m.M.n. eigentlich nur für die interaktive Benutzung in einer Shell notwendig. Wenn du es unbedingt automatisch haben möchtest, könntest du es mit den von deiner Shell dafür bereitgestellten Features für einzelne User automatisch starten. Eigentlich braucht man das aber gar nicht und ich hallte das nicht für sinnvoll. Es genügt, wenn du dein Python-Skript mit dem Interpreter aus dem virtuellen Environment startest. Dazu kann man sich auch einen kleinen Shellskript-Wrapper basteln, den man – je nachdem, für wen das zugänglich sein soll – z. B. in ~/bin oder /usr/local/bin oder so ablegen kann (ggf. PATH Variable anpassen).
Re: Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 20:31
von __deets__
Innerhalb des venv gibt es einen bin folder. Und das python in dem, oder andere Skripte daneben, sind automatisch mit dem venv gestartet. Ohne activate.
Re: Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 21:07
von joernius
Ich habe leider keine Ahnung, wie die virtuelle Umgebung unter der Haube funktioniert.
Der Python-Aufruf im bin/-Verzeichnis innerhalb dieser Umgebung ist einfach nur nach /usr/bin/python3 verlinkt. Es damit der gleiche Interpreter bzw. es hat keinen Einfluss, wenn ich die Shebang-Zeile auf die des python3 in der virtuellen Umgebung ändere.
Eine Art Wrapper wie folgt
zu erstellen, brachte beim Start kein Anziehen der virtuellen Bibliotheken.
Re: Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 21:14
von sparrow
In dem Verzeichnis des venv gibt es ein bin Verzeichnis. Mit dem Python daraus startest du dein Script.
Und wenn das nicht geht, dann nimm das venv, das Teil von Python ist.
zum erstellen.
Re: Python virtuelles Enviroment automatisch starten (Linux)
Verfasst: Mittwoch 30. März 2022, 21:46
von joernius
Ein Erfolg:
Es funktioniert bei der eingebauten Python3-Methode (python3 -m venv env_dir), bei der bei mir angedachten Methode (mkvirtualenv env_dir -p python3) geht es nicht.
Das macht aber nichts, dann werde ich eben zu der anderen Methode wechseln, ich nehme an es hat keine Nachteile.
Vielen Dank.