2025-04-23 16:57:25 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 16:57:25 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 12:05:52 +02:00
2025-04-23 12:05:52 +02:00

Python Bootstrap-Template mit .venv und .env Support

Dieses Template nutzt PEP 8, Type Hints, Docstrings und einen vordefinierten Workspace für sauberen Python-Code.
Ausserdem 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

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.



🔧 Projektstruktur


📁 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  
├── 📄 VERSION             # Versionsinfo zum Paket  
├── 📄 run.py              # Einstiegspunkt für die Anwendung  
└── 📁 app/                #  
    ├── 📄 __init__.py     #  
    ├── 📄 main.py         # Hauptlogik der Anwendung  
    └── 📄 bootstrap.py    # Setup- und Relaunch-Logik  

🚀 Erste Schritte

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. Die App startet

📦 Abhängigkeiten

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

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!  

🧼 Optional: .env.example

Erstelle eine .env.example, um deine Konfiguration zu dokumentieren:

APP_MODE=production
PORT=8000
LOGLEVEL=info

🪵 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 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 932 KiB
Languages
Python 100%