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.
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
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:
- pep-518-konform 🚫
⚠️ 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. Einfach deinen Code in main.py werfen, bei Bedarf requirements.txt anpassen, run.py starten – fertig. Kein Setup-Wahnsinn, kein Overhead.
📑 Inhalt der Readme
🔧 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
├── 📄 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 einemgit 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.
Erster Start des Templates:
python run.py
Beim ersten Start passiert
.venv
wird erstellt (wenn noch nicht vorhanden)requirements.txt
wird installiert- Das Skript wird automatisch innerhalb der venv neu gestartet
.env
wird geladen (falls vorhanden)- Die App startet 🚀
Es erfolgen einige Ausgaben, die alle aus der
main.py
stammen, außer duDEBUG
in der.env
aktiviert hast.
📦 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!
🪵 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 1 MB 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 vonmain.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 + P
→ Tasks: Run Task
→ Linter (pylint)
oder Typprüfung (mypy)
aufrufen.
📁 Lizenz
MIT LICENSE – frei verwendbar bei Namensnennung in eigenen Projekten.