"feat: Add update_requirements.py for managing Python dependencies"
This commit is contained in:
@@ -4,12 +4,19 @@
|
||||
|
||||
Die MYP Platform verwendet verschiedene Requirements-Dateien für unterschiedliche Umgebungen:
|
||||
|
||||
- `requirements.txt` - Basis-Abhängigkeiten für alle Umgebungen
|
||||
- `requirements.txt` - **Basis-Abhängigkeiten basierend auf tatsächlich verwendeten Imports in app.py**
|
||||
- `requirements-dev.txt` - Entwicklungsabhängigkeiten (Testing, Debugging, etc.)
|
||||
- `requirements-prod.txt` - Produktionsabhängigkeiten (optimiert für Performance)
|
||||
|
||||
## Installation
|
||||
|
||||
### Basis-Installation (Empfohlen)
|
||||
|
||||
```bash
|
||||
# Nur die wirklich benötigten Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Entwicklungsumgebung
|
||||
|
||||
```bash
|
||||
@@ -20,108 +27,108 @@ pip install -r requirements-dev.txt
|
||||
### Produktionsumgebung
|
||||
|
||||
```bash
|
||||
# Nur Produktionsabhängigkeiten installieren
|
||||
# Produktionsabhängigkeiten installieren
|
||||
pip install -r requirements-prod.txt
|
||||
```
|
||||
|
||||
### Basis-Installation
|
||||
## Aktualisierte Requirements (Januar 2025)
|
||||
|
||||
```bash
|
||||
# Nur Basis-Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
### Basis-Requirements (requirements.txt)
|
||||
**Basierend auf tatsächlich verwendeten Imports in app.py:**
|
||||
|
||||
## Wichtige Aktualisierungen (Januar 2025)
|
||||
#### Core Flask Framework
|
||||
- **Flask 3.1.1** - Neueste stabile Version
|
||||
- **Flask-Login 0.6.3** - Benutzer-Authentifizierung
|
||||
- **Flask-WTF 1.2.1** - CSRF-Schutz und Formulare
|
||||
|
||||
### Core Framework
|
||||
- **Flask 3.1.1** - Neueste stabile Version mit verbesserter Performance
|
||||
- **SQLAlchemy 2.0.36** - Moderne APIs und bessere Performance
|
||||
- **Werkzeug 3.1.3** - Verbesserte Sicherheit
|
||||
#### Datenbank
|
||||
- **SQLAlchemy 2.0.36** - ORM für Datenbankoperationen
|
||||
|
||||
### Sicherheit
|
||||
- **cryptography 44.0.0** - Neueste Sicherheitsupdates
|
||||
- **bcrypt 4.2.1** - Verbesserte Passwort-Hashing-Algorithmen
|
||||
#### Sicherheit
|
||||
- **Werkzeug 3.1.3** - WSGI-Utilities und Passwort-Hashing
|
||||
- **bcrypt 4.2.1** - Passwort-Hashing
|
||||
- **cryptography 44.0.0** - SSL-Zertifikate
|
||||
|
||||
### Performance
|
||||
- **redis 5.2.1** - Bessere Caching-Performance
|
||||
- **orjson 3.10.12** - Schnellere JSON-Verarbeitung
|
||||
- **ujson 5.10.0** - Alternative JSON-Bibliothek für Performance
|
||||
#### Smart Plug Steuerung
|
||||
- **PyP100 0.1.2** - TP-Link Tapo Smart Plugs (neueste verfügbare Version)
|
||||
|
||||
### Neue Abhängigkeiten
|
||||
- **pandas 2.2.3** & **numpy 2.2.1** - Für erweiterte Datenanalyse
|
||||
- **structlog 24.4.0** - Strukturiertes Logging
|
||||
- **python-dotenv 1.0.1** - Umgebungsvariablen-Management
|
||||
#### System & Monitoring
|
||||
- **psutil 6.1.1** - System-Monitoring
|
||||
- **redis 5.2.1** - Rate Limiting und Caching
|
||||
- **requests 2.32.3** - HTTP-Anfragen
|
||||
|
||||
#### Template Engine
|
||||
- **Jinja2 3.1.5** - Template-Rendering
|
||||
- **MarkupSafe 3.0.2** - Sichere String-Verarbeitung
|
||||
- **itsdangerous 2.2.0** - Sichere Daten-Serialisierung
|
||||
|
||||
#### Zusätzliche Core-Abhängigkeiten
|
||||
- **click 8.1.8** - CLI-Kommandos
|
||||
- **blinker 1.9.0** - Flask-Signaling
|
||||
|
||||
#### Windows-spezifisch
|
||||
- **pywin32 308** - Windows-APIs (nur auf Windows)
|
||||
|
||||
## Kompatibilität
|
||||
|
||||
### Python-Versionen
|
||||
- **Mindestversion**: Python 3.9
|
||||
- **Empfohlen**: Python 3.11 oder 3.12
|
||||
- **Getestet mit**: Python 3.11.9, 3.12.9, 3.13.3
|
||||
- **Getestet mit**: Python 3.13.3
|
||||
|
||||
### Betriebssysteme
|
||||
- **Windows**: Vollständig unterstützt (mit pywin32 und wmi)
|
||||
- **Windows**: Vollständig unterstützt (mit pywin32)
|
||||
- **Linux**: Vollständig unterstützt
|
||||
- **macOS**: Vollständig unterstützt
|
||||
|
||||
## Entwicklungstools
|
||||
## Wichtige Änderungen
|
||||
|
||||
### Code-Qualität
|
||||
- **black** - Code-Formatierung
|
||||
- **flake8** - Linting
|
||||
- **mypy** - Type-Checking
|
||||
- **pylint** - Erweiterte Code-Analyse
|
||||
### Was wurde entfernt
|
||||
- **Nicht verwendete Pakete**: pandas, numpy, orjson, ujson, structlog
|
||||
- **Entwicklungstools**: black, flake8, mypy (verschoben nach requirements-dev.txt)
|
||||
- **Optionale Pakete**: watchdog, python-dotenv, sphinx
|
||||
|
||||
### Testing
|
||||
- **pytest** - Test-Framework
|
||||
- **pytest-cov** - Coverage-Berichte
|
||||
- **pytest-mock** - Mocking-Unterstützung
|
||||
### Was wurde beibehalten
|
||||
- **Nur tatsächlich verwendete Imports** aus app.py und Core-Modulen
|
||||
- **Kritische Sicherheitspakete** für Produktionsbetrieb
|
||||
- **Windows-Kompatibilität** für die Zielumgebung
|
||||
|
||||
### Debugging
|
||||
- **ipdb** - Interaktiver Debugger
|
||||
- **pudb** - Terminal-basierter Debugger
|
||||
## Installation mit Extras
|
||||
|
||||
## Produktions-Optimierungen
|
||||
### Entwicklungstools installieren
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install pytest==8.3.4 pytest-cov==6.0.0
|
||||
```
|
||||
|
||||
### Monitoring
|
||||
- **sentry-sdk** - Error-Tracking
|
||||
- **prometheus-client** - Metriken-Sammlung
|
||||
|
||||
### Performance
|
||||
- **gevent** - Asynchrone I/O
|
||||
- **gunicorn** - WSGI-Server
|
||||
|
||||
### Sicherheit
|
||||
- **flask-talisman** - Sicherheits-Headers
|
||||
- **flask-cors** - CORS-Unterstützung
|
||||
### Produktionsserver installieren
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install gunicorn==23.0.0
|
||||
```
|
||||
|
||||
## Wartung
|
||||
|
||||
### Requirements aktualisieren
|
||||
|
||||
### Requirements prüfen
|
||||
```bash
|
||||
# Alle Pakete auf neueste Versionen prüfen
|
||||
# Installierte Pakete anzeigen
|
||||
pip list
|
||||
|
||||
# Veraltete Pakete prüfen
|
||||
pip list --outdated
|
||||
|
||||
# Sicherheitsupdates prüfen
|
||||
safety check
|
||||
|
||||
# Requirements-Dateien aktualisieren
|
||||
pip-compile requirements.in
|
||||
# Abhängigkeitsbaum anzeigen
|
||||
pip show --verbose Flask
|
||||
```
|
||||
|
||||
### Abhängigkeiten-Analyse
|
||||
|
||||
### Sicherheitsupdates
|
||||
```bash
|
||||
# Abhängigkeitsbaum anzeigen
|
||||
pipdeptree
|
||||
# Sicherheitslücken prüfen (falls safety installiert)
|
||||
pip install safety
|
||||
safety check
|
||||
|
||||
# Sicherheitslücken prüfen
|
||||
bandit -r .
|
||||
|
||||
# Code-Qualität prüfen
|
||||
flake8 .
|
||||
mypy .
|
||||
# Alle Pakete aktualisieren
|
||||
pip install --upgrade -r requirements.txt
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
@@ -129,40 +136,40 @@ mypy .
|
||||
### Häufige Probleme
|
||||
|
||||
1. **PyP100 Installation**
|
||||
- Bei Problemen mit PyP100: `pip install --no-deps PyP100`
|
||||
- Version 0.1.2 ist die neueste verfügbare Version
|
||||
- Bei Problemen: `pip install --no-deps PyP100==0.1.2`
|
||||
|
||||
2. **Windows-spezifische Pakete**
|
||||
- pywin32 und wmi werden automatisch nur auf Windows installiert
|
||||
2. **Dependency-Konflikte**
|
||||
- flask-caching erfordert Flask<3, aber Flask 3.1.1 ist installiert
|
||||
- Lösung: `pip install flask-caching --upgrade` oder entfernen
|
||||
|
||||
3. **Cryptography-Probleme**
|
||||
- Bei Build-Fehlern: Rust-Compiler installieren oder Wheel verwenden
|
||||
3. **Windows pywin32**
|
||||
- Wird automatisch nur auf Windows installiert
|
||||
- Bei Problemen: `pip install --force-reinstall pywin32`
|
||||
|
||||
4. **Memory-Probleme bei großen Abhängigkeiten**
|
||||
- pandas und numpy benötigen ausreichend RAM für Installation
|
||||
4. **PATH-Warnungen**
|
||||
- Scripts werden in User-Verzeichnis installiert
|
||||
- Lösung: `--no-warn-script-location` verwenden
|
||||
|
||||
### Performance-Tipps
|
||||
|
||||
1. **Pip-Cache nutzen**
|
||||
1. **Schnellere Installation**
|
||||
```bash
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt --no-deps
|
||||
```
|
||||
|
||||
2. **Cache nutzen**
|
||||
```bash
|
||||
pip install --cache-dir ~/.pip/cache -r requirements.txt
|
||||
```
|
||||
|
||||
2. **Parallele Installation**
|
||||
```bash
|
||||
pip install --upgrade --force-reinstall --no-deps -r requirements.txt
|
||||
```
|
||||
|
||||
3. **Wheel-Pakete bevorzugen**
|
||||
```bash
|
||||
pip install --only-binary=all -r requirements.txt
|
||||
```
|
||||
|
||||
## Lizenz-Informationen
|
||||
|
||||
Alle verwendeten Pakete sind mit der MIT/BSD/Apache-Lizenz kompatibel.
|
||||
Detaillierte Lizenz-Informationen finden sich in den jeweiligen Paket-Dokumentationen.
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung**: Januar 2025
|
||||
**Nächste geplante Überprüfung**: April 2025
|
||||
**Basis-Requirements**: Nur tatsächlich verwendete Imports
|
||||
**Nächste Überprüfung**: April 2025
|
||||
Reference in New Issue
Block a user