Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen [2026/02/08 17:27] torsten.roehlprojekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen [2026/02/22 18:30] (aktuell) torsten.roehl
Zeile 4: Zeile 4:
  
  
 +//Ein **Python-Environment** (**virtuelle Umgebung**) dient dazu, Projekte voneinander zu trennen. Abhängigkeiten und Bibliotheken werden projektbezogen installiert, ohne das globale System zu verändern. Dadurch lassen sich unterschiedliche Projekte mit verschiedenen Paketversionen parallel betreiben und reproduzierbar aufsetzen. \\
 +**Dies ist stabiler und professioneller als ohne Umgebung zu arbeiten, da durch Fehlkonfigurationen eventuell das Python-System unbrauchbar gemacht werden könnte.**//
  
  
-====== Raspberry-Pi-Kursprojekt: GPIO-App mit wachsender Architektur ====== 
  
-  * erst reines Python +{{ :raspberry_pi:python_env.png?450 |}}
-  * dann Dauerprozess +
-  * dann Web-API +
-  * dann Apache davor +
-  * EIN Projekt, keine Neuentwicklung+
  
-**ENV:** gpio_projects   
-**Projektpfad:** ~/devel/gpio_projects   
  
  
 +===== Überblick =====
 +  * Voraussetzungen
 +  * Umgebung (Environment) anlegen
 +  * Environment managen
  
-===== PHASE 1 – Reines Python + GPIO =====+===== Details =====
  
  
  
-==== 0) System vorbereiten ==== +==== Voraussetzungen ====
 <code bash> <code bash>
 sudo apt update sudo apt update
Zeile 32: Zeile 30:
 ---- ----
  
-==== 1Projektordner anlegen ====+==== Umgebung (Environment) anlegen ====
  
-<code bash> +Um eine Umgebung zu erstellen, wird innerhalb eines Projektordners (hier beispielsweise''mein_projekt''folgender Befehl eingegeben:
-mkdir -p ~/devel/gpio_projects +
-cd ~/devel/gpio_projects +
-</code> +
- +
----- +
- +
-==== 2) Virtuelle Umgebung anlegen (NAMEgpio_projects====+
  
 <code bash> <code bash>
-python3 -m venv gpio_projects +mkdir -p ~/devel/projects/mein_projekt   # Projektordner anlegen 
-source gpio_projects/bin/activate +cd ~/devel/projects/mein_projekt         # in das Projekt wechseln 
- +python3 -m venv mein_projekt_env         # Environment anlegen
-pip install RPi.GPIO+
 </code> </code>
  
----- 
  
-==== 3) Projektstruktur Phase 1 ==== 
  
-<code> +==== Environment managen ==== 
-gpio_projects/ +Nach dem Anlegen einer Umgebung muss diese aktiviert werden, um benutzt werden zu können (dies erkennt man am Prompt). Wichtig ist außerdem, dass beim Aktivieren der korrekte Pfad zur Umgebung angegeben werden muss, während das Deaktivieren unabhängig vom aktuellen Verzeichnis funktioniert.
- ├── gpio_hw.py +
- ├── logic.py +
- ├── main.py +
- └── gpio_projects/        # ENV +
- +
-(gpio_envpi@raspi88:~/devel/gpio_projects $ tree -L 1    +
-. +
-├── gpio_env +
-├── gpio_hw.py +
-├── logic.py +
-└── main.py+
  
 +=== Environment aktivieren ===
  
 +<code bash>
 +# Pfad zur venv angeben
 +source ~/devel/projects/mein_projekt/mein_projekt_env/bin/activate   
 +</code>
  
 +=== Environment deaktivieren ===
 +<code bash>
 +deactivate        # funktioniert aus jedem Verzeichnis
 </code> </code>
  
----- +=== Environment löschen === 
- +Zum Löschen reicht es, den Ordner der Umgebung zu entfernen. 
-==== 4) gpio_hw.py ==== +<code bash
- +rm -rf ~/devel/projects/mein_projekt/mein_projekt_env
-<code python  gpio_hw.py+
-import RPi.GPIO as GPIO +
- +
-PIN = 17 +
- +
-GPIO.setmode(GPIO.BCM) +
-GPIO.setup(PIN, GPIO.OUT) +
- +
-def on(): +
-    GPIO.output(PIN, GPIO.HIGH) +
- +
-def off(): +
-    GPIO.output(PIN, GPIO.LOW) +
- +
-def status(): +
-    return GPIO.input(PIN) +
- +
-def cleanup(): +
-    GPIO.cleanup()+
 </code> </code>
  
----- 
  
-==== 5) logic.py ==== 
  
-<code python logic.py> +===== Anhang =====
-import gpio_hw+
  
-def turn_on(): 
-    gpio_hw.on() 
-    return "on" 
  
-def turn_off(): 
-    gpio_hw.off() 
-    return "off" 
  
-def get_status(): +++++ ENV | 
-    return "on" if gpio_hw.status() else "off" +<code | readme.txt>
-</code>+
  
-----+# [python env]
  
-==== 6) main.py ====+## env anlegen 
 +cd ~/devel/projects/mein_projekt  # in den Projektordner wechseln 
 +python3 -m venv mein_projekt_env  # venv erstellen
  
-<code python  main.py> +## aktivieren                     - absolute Pfadangabe zur venv 
-import logic +source ~/devel/projects/mein_projekt/mein_projekt_env/bin/activate   
-import gpio_hw+
  
-print("GPIO CLI gestartet (CTRL+C beendet)")+## deaktivieren 
 +deactivate                       # venv verlassen
  
-try: +## löschen 
-    while True: +cd ~/devel/projects/mein_projekt # in den Projektordner wechseln 
-        cmd = input("on off status > ").strip() +rm -rf mein_projekt_env          # venv-Ordner entfernen
-        if cmd == "on": +
-            print(logic.turn_on()) +
-        elif cmd == "off": +
-            print(logic.turn_off()) +
-        elif cmd == "status": +
-            print(logic.get_status()) +
-except KeyboardInterrupt: +
-    pass +
-finally: +
-    gpio_hw.cleanup() +
-</code>+
  
----- 
  
-==== 7) Start Phase 1 ==== 
- 
-<code bash> 
-cd ~/devel/gpio_projects 
-source gpio_projects/bin/activate 
-python3 main.py 
 </code> </code>
 +++++
  
----- 
  
-===== PHASE 3 – Web später ===== +++++ Verwendete Pakete | 
- +<code bash Liste
-<code bash> +(course_env) pi@raspi88:~ $ pip list --not-required | grep -v pip 
-pip install fastapi uvicorn+Package    Version 
 +---------- ------- 
 +fastapi    0.129.0 
 +matplotlib 3.10.8 
 +RPi.GPIO   0.7.1 
 +uvicorn    0.41.0 
 +(course_env) pi@raspi88:~ $ 
 </code> </code>
  
----- +<code bash Quick Install> 
- +pip install fastapi 
-===== systemd später mit dieser ENV ===== +pip install matplotlib 
- +pip install RPi.GPIO 
-<code> +pip install uvicorn
-ExecStart=/home/pi/devel/gpio_projects/gpio_projects/bin/uvicorn api:app --host 127.0.0.1 --port 8000+
 </code> </code>
- +++++
----- +
- +
-===== Ergebnis ===== +
- +
-  * ENV = gpio_projects +
-  * Projekt = ~/devel/gpio_projects +
-  * kein raspi_gpio_env mehr +
-  * konsistent für alle Phasen +
- +
projekt/python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen.1770571633.txt.gz · Zuletzt geändert: von torsten.roehl