Adam Skotarczak e960ceb1dd workflow
2025-04-25 13:47:44 +02:00
2025-04-24 13:52:37 +02:00
2025-04-25 13:47:44 +02:00
2025-04-24 13:52:37 +02:00
2025-04-24 13:52:37 +02:00
2025-04-24 13:52:37 +02:00
2025-04-24 14:56:23 +02:00
2025-04-25 13:47:44 +02:00
2025-04-25 13:47:44 +02:00
2025-04-24 13:52:37 +02:00
2025-04-24 13:52:37 +02:00
2025-04-24 14:56:23 +02:00
2025-04-25 13:47:44 +02:00

Python Bootstrap-Flask-Template mit LOGGING - .venv- und .env Support

Logo

⚙️ Dieses Projekt verwendet Git Subtree zur Integration des Basis-Templates. Details siehe SUBTREE.md.

DIESES DOKUMENT BEFINDET SICH IN DER ENTWICKLUNG UND IST UNVOLLSTÄNDIG UND FALSCH

Dieses Template nutzt PEP 8, Type Hints, Docstrings und einen vordefinierten Workspace für sauberen Python-Code.
Außerdem bietet es ein portables Start-Template für Python-Anwendungen mit folgenden Features:

  • Automatische Erstellung einer virtuellen Umgebung (.venv)
  • Automatische Installation von Abhängigkeiten aus requirements.txt
  • Automatischer Neustart in der virtuellen Umgebung
  • Unterstützung von Umgebungsvariablen über eine .env-Datei
  • Sauberer Einstiegspunkt über run.py
  • Keine systemweiten Python-Pakete notwendig
  • Logging-Utils bereits integriert
  • Flask integration und Template Management

Das Template ist durchdacht, pragmatisch und stark auf Entwicklerkomfort ausgelegt. Es bietet eine sehr gute Grundlage für Projekte aller Art insbesondere CLI-Tools, kleine Services und lokale Anwendungen. Die automatische Einrichtung der virtuellen Umgebung hebt es funktional deutlich von Standard-Vorlagen ab.

Was dieses template nicht ist:

⚠️ Dieses Template verfolgt kein komplexes Build-System. Es ist dafür gedacht, dir in Sekunden eine saubere, gekapselte Python-Umgebung bereitzustellen perfekt zum schnellen Testen, Debuggen oder Projektstart. Insbesondere für Webapps mit Flask und Visualisierung.

  • Einfach deinen Code in main.py werfen, bei Bedarf requirements.txt anpassen, run.py starten, Flask konfigurieren [PLATZHALTER] und fertig. Kein Setup-Wahnsinn, kein Overhead!

📑 Inhalt der Readme


🔧 Projektstruktur [IN BEARBEITUNG]


📁 template-root/
├── 📁 .vscode/            # Projekteinstellungen VS-Code  
│   ├── 📄 settings.json   # Einstellungen  
│   └── 📄 extensions.json # Erweiterungen  
├── 📄 .env                # Projektkonfiguration (optional, nicht im git)  
├── 📄 .env.example        # Vorlage der .env  
├── 📄 requirements.txt    # Abhängigkeiten (z.B. python-dotenv)  
├── 📄 README.md           # diese Datei  
├── 📄 CHANGELOG.md        #  
├── 📄 VERSION             # Versionsinfo zum Paket  
├── 📄 run.py              # Einstiegspunkt für die Anwendung  
├── 📁 media/
│   └── 📄 logo.png        # Logo für GitHub  
└── 📁 app/
    ├── 📄 __init__.py     #  
    ├── 📄 main.py         # Hauptlogik der Anwendung  
    └── 📄 bootstrap.py    # Setup- und Relaunch-Logik  

Release-Pakete als .zip sind bereits von unötigem Balast bereinigt. Die dargestellte Struktur entspricht einem git clone.

🔝


🚀 Erste Schritte

  • .env.example in .env umbenennen und individuell befüllen.
  • .vscode-Verzeichnis löschen, wenn du eigene Einstellungen nutzt. Ich habe es versehentlich committet und aus Bequemlichkeit drin gelassen, weil es meinem Standard entspicht.
  • requirements.txt auf deine Bedürfnisse anpassen.
  • media/Verzeichnis Löschen falls vorhanden.

Flask Server konfigurieren

Der erste Start

Erster Start des Templates:

python run.py

Beim ersten Start passiert:

  1. .venv wird erstellt (wenn noch nicht vorhanden)
  2. requirements.txt wird installiert
  3. Das Skript wird automatisch innerhalb der venv neu gestartet
  4. .env wird geladen (falls vorhanden)
  5. Flask Server startet
  6. Die App startet 🚀

Es erfolgen einige Ausgaben, die alle aus der main.py stammen, außer du DEBUG in der .env aktiviert hast.

🔝


📦 Abhängigkeiten

Alle Abhängigkeiten werden aus requirements.txt installiert.
Beispiel:

flask
python-dotenv

🔝


⚙️ .env-Datei (optional)

Wenn vorhanden, wird .env automatisch geladen.
Beispiel:

APP_MODE=development
LOGLEVEL=debug
PORT=8080

Diese Werte sind im Code über os.getenv("APP_MODE") verfügbar.

🔝


📜 Beispielausgabe

[BOOTSTRAP] Erstelle virtuelle Umgebung...  
[BOOTSTRAP] Installiere pip + requirements.txt...  
[BOOTSTRAP] Starte in virtueller Umgebung neu...  
[RUN] Lade .env aus: ./cliqrcode/.env  
[APP] Starte Anwendung im Modus: development  
[APP] Hello, world!  

🔝


🪵 Logging

Dieses Template verwendet ein integriertes Logging-Modul mit folgenden Eigenschaften:

  • Ausgabe in die Konsole (immer aktiv)
  • Optionale Ausgabe in eine Logdatei (LOGFILE)
  • Unterstützung für rotierende Logdateien
  • Loglevel konfigurierbar über .env
  • Plattformunabhängig (Windows, Linux, macOS)
  • Keine externen Abhängigkeiten

🔧 Konfiguration (in .env)

LOGLEVEL=INFO          # Möglich: DEBUG, INFO, WARNING, ERROR, CRITICAL
LOGFILE=logs/app.log   # Optionaler Pfad zur Logdatei (relativ oder absolut)

Wenn LOGFILE nicht gesetzt ist, wird nur in die Konsole geloggt.

📥 Beispielausgabe

[2025-04-23 14:10:00] INFO app.main: Template ready.
[2025-04-23 14:10:00] DEBUG app.main: Dies ist eine Debug-Meldung.

📌 Logik im Code

In beliebigen Modulen kannst du so einen Logger verwenden:

from app.logging_utils import get_logger

log = get_logger(__name__)
log.info("Template ready.")

📁 Logrotation

Die Logdatei wird bei 1MB automatisch rotiert (max. 3 Backups), z.B.:

logs/app.log
logs/app.log.1
logs/app.log.2

🔝


🛠 Hinweise

  • Das Template ist portabel und benötigt keine global installierten Pakete.
  • Du kannst es für jede neue App wiederverwenden.
  • run.py ist der einzige Einstiegspunkt keine direkten Aufrufe von main.py.

🔝


🧪 Getestet mit

  • Python 3.11, 3.12, 3.13
  • Windows & Linux
  • VS Code, Terminal, PowerShell

🔝


🛠 Einsatz von Linter (pylint)

PS C:\Users\adams\Documents\template> .\.venv\Scripts\activate
(.venv) PS C:\Users\adams\Documents\template> pylint.exe run.py
************* Module run
run.py:27:4: C0412: Imports from package app are not grouped (ungrouped-imports)
run.py:12:0: W0611: Unused import os (unused-import)

-----------------------------------
Your code has been rated at 8.33/10

Bonus:
Durch den Einsatz der <.vscode/task.json> für VS-Code, kannst du in VS-Code mit Strg + Umschalt + PTasks: Run TaskLinter (pylint) oder Typprüfung (mypy) aufrufen.

🔝


📁 Lizenz

MIT frei verwendbar in eigenen Projekten.

Description
No description provided
Readme 1.8 MiB
Languages
Python 100%