projekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen [2026/02/08 17:27] – torsten.roehl | projekt:python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen [2026/02/12 12:51] (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, | ||
| + | **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: | ||
| - | * erst reines Python | + | {{ : |
| - | * dann Dauerprozess | + | |
| - | * dann Web-API | + | |
| - | * dann Apache davor | + | |
| - | * EIN Projekt, keine Neuentwicklung | + | |
| - | **ENV:** gpio_projects | ||
| - | **Projektpfad: | ||
| + | ===== Ü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: | ||
| ---- | ---- | ||
| - | ==== 1) Projektordner | + | ==== Umgebung (Environment) anlegen ==== |
| - | <code bash> | + | Um eine Umgebung |
| - | mkdir -p ~/ | + | |
| - | cd ~/ | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 2) Virtuelle | + | |
| <code bash> | <code bash> | ||
| - | python3 | + | mkdir -p ~/devel/gpio_projects |
| - | source gpio_projects/bin/activate | + | cd ~/devel/gpio_projects |
| - | + | python3 -m venv gpio_env | |
| - | pip install RPi.GPIO | + | |
| </ | </ | ||
| - | ---- | ||
| - | ==== 3) Projektstruktur Phase 1 ==== | ||
| - | |||
| - | < | ||
| - | gpio_projects/ | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | (gpio_env) pi@raspi88: | ||
| - | . | ||
| - | ├── gpio_env | ||
| - | ├── gpio_hw.py | ||
| - | ├── logic.py | ||
| - | └── main.py | ||
| + | ==== Environment managen ==== | ||
| + | Nach dem Anlegen einer Umgebung muss diese aktiviert werden, um benutzt werden zu können (dies erkennt man am Prompt). Wichtig ist außerdem zu wissen, dass beim Aktivieren der komplette Pfad angegeben werden muss, während das Deaktivieren unabhängig vom aktuellen Verzeichnis funktioniert. | ||
| + | === Environment aktivieren === | ||
| + | <code bash> | ||
| + | source ~/ | ||
| </ | </ | ||
| - | ---- | + | === Environment deaktivieren |
| - | + | ||
| - | ==== 4) gpio_hw.py | + | |
| - | + | ||
| - | <code python | + | |
| - | import RPi.GPIO as GPIO | + | |
| - | + | ||
| - | PIN = 17 | + | |
| - | + | ||
| - | GPIO.setmode(GPIO.BCM) | + | |
| - | GPIO.setup(PIN, | + | |
| - | + | ||
| - | def on(): | + | |
| - | GPIO.output(PIN, | + | |
| - | + | ||
| - | def off(): | + | |
| - | GPIO.output(PIN, | + | |
| - | + | ||
| - | def status(): | + | |
| - | return GPIO.input(PIN) | + | |
| - | + | ||
| - | def cleanup(): | + | |
| - | GPIO.cleanup() | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 5) logic.py ==== | + | |
| - | + | ||
| - | <code python logic.py> | + | |
| - | import gpio_hw | + | |
| - | + | ||
| - | def turn_on(): | + | |
| - | gpio_hw.on() | + | |
| - | return " | + | |
| - | + | ||
| - | def turn_off(): | + | |
| - | gpio_hw.off() | + | |
| - | return " | + | |
| - | + | ||
| - | def get_status(): | + | |
| - | return " | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 6) main.py ==== | + | |
| - | + | ||
| - | <code python | + | |
| - | import logic | + | |
| - | import gpio_hw | + | |
| - | + | ||
| - | print(" | + | |
| - | + | ||
| - | try: | + | |
| - | while True: | + | |
| - | cmd = input(" | + | |
| - | if cmd == " | + | |
| - | print(logic.turn_on()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.turn_off()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.get_status()) | + | |
| - | except KeyboardInterrupt: | + | |
| - | pass | + | |
| - | finally: | + | |
| - | gpio_hw.cleanup() | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== 7) Start Phase 1 ==== | + | |
| <code bash> | <code bash> | ||
| - | cd ~/ | + | deactivate |
| - | source gpio_projects/ | + | |
| - | python3 main.py | + | |
| </ | </ | ||
| - | ---- | + | === Environment löschen |
| - | + | Zum Löschen reicht es, den Ordner der Umgebung zu entfernen. | |
| - | ===== PHASE 3 – Web später | + | |
| <code bash> | <code bash> | ||
| - | pip install fastapi uvicorn | + | rm -rf ~/ |
| </ | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== systemd später mit dieser ENV ===== | ||
| - | |||
| - | < | ||
| - | ExecStart=/ | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== Ergebnis ===== | ||
| - | |||
| - | * ENV = gpio_projects | ||
| - | * Projekt = ~/ | ||
| - | * 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
