Wie man Streamlit-Apps einfach bereitstellt und in der Cloud hostet
Streamlit hat sich als Game-Changer im Bereich der Datenanwendungen herausgestellt. Es ermöglicht Entwicklern, Daten-Scripts schnell und mühelos in interaktive Web-Apps umzuwandeln. Doch die Reise endet nicht nach der Erstellung einer App. Der nächste entscheidende Schritt ist die Bereitstellung, die es Ihrer Streamlit-App ermöglicht, weltweit von Benutzern genutzt zu werden und Interaktion, Feedback und praktische Anwendung zu ermöglichen.
In diesem umfassenden Leitfaden werden verschiedene Plattformen zur Bereitstellung Ihrer Streamlit-App behandelt, darunter Streamlit Community Cloud, Heroku, AWS, Google Cloud und mehr. Wir werden jeden Schritt mit Ihnen durchgehen, häufig auftretende Probleme diskutieren und Lösungen bereitstellen, um einen reibungslosen Bereitstellungsprozess zu gewährleisten. Also, lasst uns loslegen!
Haben Sie schon von diesem großartigen Data Analysis & Data Visualisation Tool gehört, das Ihre Streamlit-App in eine Tableau-ähnliche Anwendung verwandelt?
PyGWalker (opens in a new tab) ist eine Python-Bibliothek, die es Ihnen ermöglicht, eine Tableau-ähnliche Benutzeroberfläche problemlos in Ihre eigene Streamlit-App zu integrieren. Schauen Sie sich dieses erstaunliche Video von How to explore data with pygwalker (opens in a new tab) an, in dem die detaillierten Schritte zur Stärkung Ihrer Streamlit-App mit dieser leistungsstarken Data Visualization Python Library gezeigt werden!
Teil 1: Bereitstellen auf DigitalOcean mit Docker
DigitalOcean, ein beliebter Cloud-Infrastrukturanbieter, bietet eine Plattform zum Bereitstellen und Skalieren von Anwendungen, die gleichzeitig auf mehreren Computern ausgeführt werden. Hier verwenden wir Docker, eine Plattform, die die Erstellung, Bereitstellung und Ausführung von Anwendungen mithilfe von Containern vereinfacht.
Was ist Docker?
Docker ist eine Open-Source-Plattform, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen automatisiert. Es kapselt Anwendungen in Container, die eigenständige ausführbare Pakete sind und alles enthalten, was zum Ausführen einer Anwendung benötigt wird.
Hier ist eine Schritt-für-Schritt-Anleitung zur Bereitstellung Ihrer Streamlit-App auf DigitalOcean mit Docker:
- Erstellen Sie eine Dockerfile: Eine Dockerfile ist ein Textdokument, das alle Befehle zur Zusammenstellung eines Abbilds enthält. Hier ist ein grundlegendes Beispiel für eine Dockerfile für eine Streamlit-App:
## Verwende eine offizielle Python-Laufzeit als Elternabbild
FROM python:3.7-slim
## Setze das Arbeitsverzeichnis im Container auf /app
WORKDIR /app
## Füge den Inhalt des aktuellen Verzeichnisses dem Container unter /app hinzu
ADD . /app
## Installiere die in der requirements.txt angegebenen Pakete
RUN pip install --no-cache-dir -r requirements.txt
## Stelle Port 80 für die Welt außerhalb dieses Containers zur Verfügung
EXPOSE 80
## Führe app.py aus, wenn der Container gestartet wird
CMD streamlit run --server.port 80 app.py
-
Richten Sie ein Droplet auf DigitalOcean ein: Ein Droplet ist eine skalierbare Computing-Plattform mit zusätzlichem Speicher, Sicherheits- und Überwachungsfunktionen. Sie können die Größe, den Standort und die anfängliche Software Ihres Droplets anpassen.
-
Bereitstellen Ihrer App: Sobald Ihre Dockerfile bereit ist und Ihre Droplet läuft, können Sie Ihre Streamlit-App bereitstellen. Hier ist ein grundlegender Befehl, um Ihr Docker-Abbild zu erstellen und auszuführen:
docker build -t my-streamlit-app .
docker run -p 80:80 my-streamlit-app
Teil 2: Streamlit Sharing
Streamlit Sharing ist eine Plattform, die Entwicklern ermöglicht, ihre Streamlit-Apps sofort und ohne Konfiguration bereitzustellen. Es ist eine hervorragende Option für diejenigen, die ihre Apps schnell und einfach teilen möchten.
So nutzen Sie Streamlit Sharing
Die Verwendung von Streamlit Sharing ist einfach. Hier ist eine Schritt-für-Schritt-Anleitung:
-
Pushen Sie Ihre Streamlit-App in ein öffentliches GitHub-Repository: Streamlit Sharing bereitstellt Apps direkt von GitHub, daher muss Ihre App in einem öffentlichen Repository sein.
-
Registrieren Sie sich für Streamlit Sharing:
Gehen Sie zur Streamlit Sharing-Website und klicken Sie auf "Mit GitHub anmelden", um sich zu registrieren.
- Bereitstellen Ihrer App: Sobald Sie angemeldet sind, klicken Sie auf "Neue App", wählen Sie Ihr GitHub-Repository, den Branch und den Dateipfad aus und klicken Sie auf "Bereitstellen". Ihre App wird in nur wenigen Minuten live sein!
Hier ist eine Beispielansicht Ihres Streamlit Sharing-Dashboards:
Meine Apps
- App 1 (Bereitgestellt)
- App 2 (Bereitgestellt)
- App 3 (In Bearbeitung)
Neue App
- Repository: mein-github-benutzername/meine-streamlit-app
- Branch: main
- Dateipfad: app.py
Teil 3: Bereitstellen als ausführbare Datei
Obwohl Streamlit das Bereitstellen von Apps als ausführbare Dateien für verschiedene Betriebssysteme offiziell nicht unterstützt, ist es mit einigen Workarounds möglich. Hier ist eine allgemeine Anleitung, wie Sie damit umgehen könnten:
-
Verpacken Sie Ihre App: Sie können Tools wie PyInstaller oder cx_Freeze verwenden, um Ihre Streamlit-App in eine ausführbare Datei zu verpacken. Diese Tools sammeln alle erforderlichen Dateien und Bibliotheken, die Ihre App zum Laufen benötigt, und bündeln sie in einer einzigen Datei.
-
Erstellen Sie einen Installer: Wenn Sie Ihre App an andere Benutzer verteilen möchten, sollten Sie einen Installer erstellen. Tools wie Inno Setup oder NSIS können Ihnen dabei helfen.
-
Testen Sie Ihre ausführbare Datei: Bevor Sie Ihre App verteilen, testen Sie die ausführbare Datei auf dem Zielbetriebssystem, um sicherzustellen, dass sie korrekt funktioniert. Hier ist ein Beispielbefehl, um eine ausführbare Datei mit PyInstaller zu erstellen:
pyinstaller --onefile --add-data='myapp:myapp' app.py
Teil 4: Bereitstellen auf Heroku
Heroku ist eine Cloud-Plattform, mit der Sie Anwendungen in verschiedenen Programmiersprachen bereitstellen, ausführen und verwalten können. Hier finden Sie eine schrittweise Anleitung, wie Sie Ihre Streamlit-Anwendung auf Heroku bereitstellen können:
-
Erstellen Sie ein Heroku-Konto: Melden Sie sich für ein kostenloses Heroku-Konto an, wenn Sie noch keins haben.
-
Installieren Sie die Heroku CLI: Die Heroku Command Line Interface (CLI) ist ein Tool, mit dem Sie Ihre Heroku-Anwendungen direkt über das Terminal erstellen und verwalten können.
-
Bereiten Sie Ihre Anwendung für Heroku vor: Heroku benötigt zwei zusätzliche Dateien, um Ihre Streamlit-Anwendung bereitzustellen: eine
Procfile
und einesetup.sh
-Datei. DasProcfile
gibt an, welchen Befehl Heroku zum Starten Ihrer Anwendung verwenden soll, und diesetup.sh
-Datei richtet Ihre Umgebung ein.
Hier ist, wie Ihr Procfile
und Ihre setup.sh
aussehen könnten:
web: sh setup.sh && streamlit run app.py
mkdir -p ~/.streamlit/
echo "\
[general]\n\
email = \"your-email@domain.com\"\n\
" > ~/.streamlit/credentials.toml
echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml
- Bereiten Sie Ihre Anwendung vor: Sobald Ihre Anwendung vorbereitet ist, können Sie sie mithilfe der Heroku CLI auf Heroku bereitstellen. Hier ist eine Beispielsequenz von Befehlen, um Ihre Anwendung bereitzustellen:
git init
heroku create
git add .
git commit -m "Initial commit"
git push heroku master
Nach diesen Schritten sollte Ihre Streamlit-Anwendung auf Heroku live sein!
Teil 5: Bereitstellen auf der Google Cloud Plattform
Die Google Cloud Platform (GCP) ist eine Suite von Cloud-Computing-Services, die auf der gleichen Infrastruktur läuft, die Google intern für seine Endbenutzerprodukte verwendet. Sie bietet eine robuste und skalierbare Umgebung zur Bereitstellung von Streamlit-Anwendungen.
Bereitstellen und Absichern einer Streamlit-Anwendung auf GCP
Hier finden Sie eine schrittweise Anleitung, wie Sie Ihre Streamlit-Anwendung auf GCP bereitstellen können:
-
Erstellen Sie ein GCP-Konto: Wenn Sie noch kein Konto haben, melden Sie sich für ein GCP-Konto an.
-
Erstellen Sie ein neues Projekt: Navigieren Sie zur GCP-Konsole und erstellen Sie ein neues Projekt.
-
Aktivieren Sie die App Engine: Navigieren Sie zum Abschnitt "App Engine" und aktivieren Sie es für Ihr Projekt.
-
Bereiten Sie Ihre Anwendung für GCP vor: Ähnlich wie bei Heroku benötigt GCP eine
app.yaml
-Datei, um Ihre Anwendung zu konfigurieren. Hier ist eine Beispieldateiapp.yaml
für eine Streamlit-Anwendung:
runtime: python39
instance_class: F2
automatic_scaling:
target_cpu_utilization: 0.65
entrypoint: streamlit run --server.port $PORT --server.enableCORS false app.py
- Bereiten Sie Ihre Anwendung vor: Sobald Ihre Anwendung vorbereitet ist, können Sie sie mit Hilfe des Google Cloud SDK auf GCP bereitstellen. Hier ist eine Beispielsequenz von Befehlen, um Ihre Anwendung bereitzustellen:
gcloud app deploy
Nach diesen Schritten sollte Ihre Streamlit-Anwendung auf GCP live sein!
Teil 6: Aufbau von Streamlit-Anwendungen in Amazon SageMaker Studio
Amazon SageMaker Studio ist eine vollständig integrierte Entwicklungsumgebung (IDE) für maschinelles Lernen. Es bietet alle Tools, die zum schnellen Aufbau, Training und Bereitstellung von maschinellen Lernmodellen benötigt werden.
Vorteile der Verwendung von Amazon SageMaker Studio
-
Vollständig verwalteter Service: Amazon SageMaker Studio kümmert sich um die gesamte zugrunde liegende Infrastruktur, sodass Sie sich auf den Aufbau und die Bereitstellung Ihrer Streamlit-Anwendungen konzentrieren können.
-
Integrierte Jupyter Notebooks: Sie können problemlos Jupyter Notebooks erstellen, um Ihre Daten zu erkunden und zu visualisieren.
-
Modellerstellung und Training: SageMaker Studio bietet integrierte Algorithmen und Unterstützung für benutzerdefinierte Algorithmen, so dass es einfach ist, Ihre maschinellen Lernmodelle zu erstellen und zu trainieren.
-
Bereitstellung von Modellen: Sobald Ihr Modell trainiert ist, können Sie es mit einem einzigen Klick über die SageMaker Studio-Konsole bereitstellen.
Teil 7: Bereitstellen auf Azure App Services
Azure App Services ist eine vollständig verwaltete Plattform zum Erstellen, Bereitstellen und Skalieren von Webanwendungen. Es unterstützt eine Vielzahl von Programmiersprachen, einschließlich Python, und eignet sich daher hervorragend zur Bereitstellung von Streamlit-Anwendungen.
Bereitstellen einer Streamlit-Anwendung auf Azure App Services
Hier finden Sie eine schrittweise Anleitung, wie Sie Ihre Streamlit-Anwendung auf Azure App Services bereitstellen können:
-
Erstellen Sie ein Azure-Konto: Wenn Sie noch keins haben, melden Sie sich für ein Azure-Konto an.
-
Erstellen Sie einen neuen App Service: Navigieren Sie zum Azure-Portal und erstellen Sie einen neuen App Service.
-
Konfigurieren Sie Ihren App Service: Wählen Sie Ihr Abonnement, Ihre Ressourcengruppe, den Namen, die Veröffentlichungsmethode (Code), den Laufzeitstapel (Python) und das Betriebssystem aus.
-
Bereiten Sie Ihre Anwendung vor: Sobald Ihr App Service eingerichtet ist, können Sie Ihre Streamlit-Anwendung mithilfe der Azure CLI oder Git bereitstellen. Hier ist eine Beispielsequenz von Befehlen, um Ihre Anwendung mithilfe der Azure CLI bereitzustellen:
az webapp up --sku F1 --name my-streamlit-app
Nach diesen Schritten sollte Ihre Streamlit-Anwendung auf Azure App Services live sein!
Teil 8: Bereitstellen von Machine Learning Pipelines auf AWS Fargate
AWS Fargate ist eine serverlose Compute-Engine für Container. Sie funktioniert sowohl mit Amazon Elastic Container Service (ECS) als auch mit Amazon Elastic Kubernetes Service (EKS) und vereinfacht so die Bereitstellung von containerisierten Anwendungen.
Bereitstellen einer PyCaret- und Streamlit-Anwendung auf AWS Fargate
Hier finden Sie eine schrittweise Anleitung, wie Sie eine Machine Learning Pipeline, die mit PyCaret entwickelt wurde, und eine Streamlit-Anwendung auf AWS Fargate bereitstellen können:
- Erstellen Sie eine Docker-Datei: Ihre Docker-Datei sollte die erforderlichen Anweisungen enthalten, um PyCaret, Streamlit und alle anderen erforderlichen Bibliotheken zu installieren. Hier ist ein grundlegendes Beispiel:
## Verwenden Sie ein offizielles Python-Runtime als Elternbild
FROM python:3.7-slim
## Legen Sie das Arbeitsverzeichnis im Container auf /app fest
WORKDIR /app
## Fügen Sie den aktuellen Verzeichnisinhalt dem Container unter /app hinzu
ADD . /app
## Installieren Sie die in der requirements.txt angegebenen Pakete
RUN pip install --no-cache-dir -r requirements.txt
## Port 80 für die Welt außerhalb dieses Containers verfügbar machen
EXPOSE 80
## Führen Sie app.py aus, wenn der Container gestartet wird
CMD streamlit run --server.port 80 app.py
2. **Bauen und Pushen Sie Ihr Docker-Image**: Sie können das Docker CLI verwenden, um Ihr Docker-Image zu bauen und es in ein Container-Register wie Amazon Elastic Container Registry (ECR) zu pushen.
3. **Erstellen Sie eine neue Task-Definition in AWS Fargate**: Eine Task-Definition ist eine Textdatei im JSON-Format, die einen oder mehrere Container beschreibt, die Ihre Anwendung bilden. Sie enthält das zu verwendende Container-Image, die erforderliche CPU und den Speicher, die Netzwerkkonfiguration und mehr.
4. **Führen Sie Ihre Aufgabe aus**: Sobald Ihre Task-Definition eingerichtet ist, können Sie Ihre Aufgabe in AWS Fargate ausführen. Ihre Streamlit-App sollte jetzt über die öffentliche IP-Adresse Ihrer Aufgabe zugänglich sein.
Hier ist eine Beispielsequenz von Befehlen, um Ihr Docker-Image zu bauen und es in Amazon ECR zu pushen:
```bash
$(aws ecr get-login --no-include-email --region region)
docker build -t my-streamlit-app .
docker tag my-streamlit-app:latest my-ecr-repo/my-streamlit-app:latest
docker push my-ecr-repo/my-streamlit-app:latest
Nach diesen Schritten sollte Ihre PyCaret- und Streamlit-App live auf AWS Fargate sein!
Teil 9: Fehlerbehebung bei Bereitstellungsfehlern
Das Bereitstellen einer Streamlit-App kann manchmal eine herausfordernde Aufgabe sein, insbesondere wenn Sie auf Fehler stoßen, die schwer zu entschlüsseln sind. Das Verständnis dieser häufigen Fehler kann Ihnen jedoch helfen, sie effektiv zu identifizieren und zu beheben.
Häufige Bereitstellungsfehler und ihre Lösungen
- ModuleNotFoundError: Dieser Fehler tritt auf, wenn Python ein Modul nicht finden kann, das Ihre App zum Ausführen benötigt. Um dies zu beheben, stellen Sie sicher, dass alle benötigten Module in Ihrer
requirements.txt
-Datei aufgelistet sind.
ModuleNotFoundError: No module named 'Modul-Name'
- StreamlitAPIException: Dieser Fehler tritt auf, wenn es ein Problem mit Ihrem Streamlit-Code gibt. Überprüfen Sie die Fehlermeldung auf Details und passen Sie Ihren Code entsprechend an.
StreamlitAPIException: 'Funktionsname' ist kein gültiger Streamlit-Befehl.
- Docker-Build-Fehler: Wenn Ihr Docker-Build fehlschlägt, liegt dies oft an Problemen in der Dockerfile. Überprüfen Sie Ihre Dockerfile auf etwaige Syntaxfehler oder fehlende Anweisungen.
ERROR: Service 'Dienstname' konnte nicht erstellt werden
- Bereitstellungs-Timeouts: Wenn Ihre Bereitstellung zu lange dauert, kann sie abbrechen. Dies kann auf eine langsame Internetverbindung, ein großes Docker-Image oder einen komplexen Build-Prozess zurückzuführen sein. Versuchen Sie, Ihre Dockerfile zu optimieren oder das Timeout-Limit zu erhöhen.
Error: Bereitstellung hat Zeitüberschreitung erreicht.
Denken Sie daran, der Schlüssel zur Fehlerbehebung besteht darin, die Fehlermeldung zu verstehen. Lassen Sie sich nicht von der technischen Terminologie einschüchtern. Analysieren Sie sie, verstehen Sie, was sie aussagt, und Sie werden eine Lösung finden können.
Fazit
Die Bereitstellung einer Streamlit-App ist ein wichtiger Schritt im Prozess der Datenanwendungsentwicklung. Sie ermöglicht es Ihrer App, der Welt zugänglich zu sein und eine Benutzerinteraktion sowie eine praktische Anwendung zu ermöglichen. In diesem Leitfaden haben wir verschiedene Plattformen zur Bereitstellung Ihrer Streamlit-App erkundet, darunter Streamlit Community Cloud, Heroku, AWS, Google Cloud, Azure und mehr.
Jede Plattform hat ihre eigenen Stärken und Schwächen, und die beste für Sie hängt von Ihren spezifischen Bedürfnissen und Umständen ab. Wir ermutigen Sie, diese Optionen zu erkunden, sie auszuprobieren und diejenige zu finden, die am besten zu Ihren Bedürfnissen passt. Viel Spaß beim Bereitstellen!
Haben Sie schon von diesem fantastischen Data Analysis & Data Visualisation Tool gehört, das Ihre Streamlit-App in Tableau verwandelt?
PyGWalker (opens in a new tab) ist eine Python-Bibliothek, die es Ihnen ermöglicht, eine Tableau-ähnliche Benutzeroberfläche mühelos in Ihre eigene Streamlit-App einzubetten.
FAQs
-
Wie kann ich meine Streamlit-App bereitstellen?
Die Bereitstellung einer Streamlit-App beinhaltet das Verpacken Ihrer App und ihrer Abhängigkeiten und das Hochladen auf eine Hosting-Plattform. Die genauen Schritte hängen von der verwendeten Plattform ab. Dieser Leitfaden enthält detaillierte Anweisungen für mehrere populäre Plattformen.
-
Wie kann ich eine Streamlit-App lokal hosten?
Um eine Streamlit-App lokal zu hosten, müssen Sie einfach den Befehl
streamlit run your-app.py
in Ihrem Terminal ausführen. Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden und alle erforderlichen Abhängigkeiten installiert sind. -
Wie lange dauert es, eine Streamlit-App bereitzustellen?
Die Bereitstellungszeit für eine Streamlit-App kann je nach Größe Ihrer App, der Geschwindigkeit Ihrer Internetverbindung und der verwendeten Plattform variieren. Mit einer guten Konfiguration kann es jedoch oft in wenigen Minuten erledigt sein.
-
Ist Streamlit besser als Flask?
Streamlit und Flask sind beide ausgezeichnete Tools, haben aber unterschiedliche Zwecke. Streamlit eignet sich für das schnelle und einfache Erstellen von Datenanwendungen, während Flask ein allgemeineres Webframework ist, das mehr Kontrolle über Ihre Anwendung bietet. Das beste Tool hängt von Ihren spezifischen Bedürfnissen ab.