Comment déployer facilement une application Streamlit et l'héberger sur le Cloud
Streamlit s'est imposé comme un élément incontournable dans le domaine des applications de données. Il permet aux développeurs de transformer rapidement et facilement des scripts de données en applications web interactives. Cependant, le parcours ne s'arrête pas à la création d'une application. L'étape suivante essentielle est le déploiement, qui rend votre application Streamlit accessible aux utilisateurs du monde entier, ouvrant la voie à l'interaction, aux commentaires et aux applications concrètes.
Dans ce guide complet, nous nous pencherons sur différentes plateformes pour déployer votre application Streamlit, notamment Streamlit Community Cloud, Heroku, AWS, Google Cloud, et plus encore. Nous vous guiderons à chaque étape, discuterons des problèmes courants et vous fournirons des solutions pour garantir un processus de déploiement fluide. Alors, commençons !
Avez-vous entendu parler de cet outil incroyable d'analyse de données et de visualisation de données, qui transforme votre application Streamlit en Tableau ?
PyGWalker (opens in a new tab) est une bibliothèque Python qui vous aide à intégrer facilement une interface utilisateur similaire à Tableau dans votre propre application Streamlit sans effort. Découvrez cette vidéo incroyable produite par Sven de Coding is Fun (opens in a new tab) qui présente les étapes détaillées pour renforcer votre application Streamlit avec cette puissante bibliothèque de visualisation de données Python !
Un grand merci à Sven et à sa formidable contribution (opens in a new tab) à la communauté PyGWalker !
De plus, vous pouvez également consulter la page GitHub de PyGWalker (opens in a new tab) pour plus d'exemples PyGWalker.
Partie 1 : Déploiement sur DigitalOcean avec Docker
DigitalOcean, un fournisseur populaire d'infrastructure Cloud, offre une plateforme pour déployer et mettre à l'échelle des applications s'exécutant simultanément sur plusieurs ordinateurs. Ici, nous utiliserons Docker, une plateforme qui simplifie la création, le déploiement et l'exécution d'applications à l'aide de conteneurs.
Qu'est-ce que Docker ?
Docker est une plateforme open-source qui automatise le déploiement, la mise à l'échelle et la gestion des applications. Elle encapsule les applications dans des conteneurs, qui sont des packages exécutables autonomes contenant tout ce dont une application a besoin pour s'exécuter.
Voici un guide étape par étape sur le déploiement de votre application Streamlit sur DigitalOcean en utilisant Docker :
- Créez un Dockerfile : Un Dockerfile est un document texte contenant toutes les commandes pour assembler une image. Voici un exemple de base d'un Dockerfile pour une application Streamlit :
## Utiliser une version officielle de Python comme image parente
FROM python:3.7-slim
## Définir le répertoire de travail dans le conteneur sur /app
WORKDIR /app
## Ajouter le contenu du répertoire courant dans le conteneur à /app
ADD . /app
## Installer les packages nécessaires spécifiés dans requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
## Rendre le port 80 accessible au monde extérieur à ce conteneur
EXPOSE 80
## Exécuter app.py lorsque le conteneur est lancé
CMD streamlit run --server.port 80 app.py
-
Configurez un droplet sur DigitalOcean : Un droplet est une plateforme de calcul évolutive dotée de capacités de stockage supplémentaires, de sécurité et de surveillance. Vous pouvez personnaliser la taille, l'emplacement et le logiciel initial de votre droplet.
-
Déployez votre application : Une fois votre Dockerfile prêt et votre droplet en cours d'exécution, vous pouvez déployer votre application Streamlit. Voici une commande de base pour construire votre image Docker et l'exécuter :
docker build -t my-streamlit-app .
docker run -p 80:80 my-streamlit-app
Partie 2 : Streamlit Sharing
Streamlit Sharing est une plateforme qui permet aux développeurs de déployer instantanément leurs applications Streamlit sans aucune configuration. C'est une excellente option pour ceux qui souhaitent partager rapidement et facilement leurs applications.
Comment utiliser Streamlit Sharing
L'utilisation de Streamlit Sharing est simple. Voici un guide étape par étape :
-
Poussez votre application Streamlit dans un dépôt public GitHub : Streamlit Sharing déploie directement les applications depuis GitHub, il est donc nécessaire que votre application soit dans un dépôt public.
-
Inscrivez-vous à Streamlit Sharing :
Allez sur le site Streamlit Sharing et cliquez sur "Sign in with GitHub" pour vous inscrire.
- Déployez votre application : Une fois connecté, cliquez sur "New app", sélectionnez votre dépôt GitHub, la branche et le chemin du fichier, puis cliquez sur "Deploy". Votre application sera en ligne en quelques minutes seulement !
Voici un exemple de ce à quoi votre tableau de bord Streamlit Sharing pourrait ressembler :
Mes applications
- Application 1 (Déployée)
- Application 2 (Déployée)
- Application 3 (En cours de progression)
Nouvelle application
- Dépôt : nom-utilisateur-github/mon-streamlit-app
- Branche : principale
- Chemin du fichier : app.py
Partie 3 : Déploiement en tant qu'exécutable
Bien que Streamlit ne prenne pas en charge officiellement le déploiement d'applications sous forme de fichiers exécutables pour différents systèmes d'exploitation, il est possible de le faire avec quelques contournements. Voici un guide général sur la façon dont vous pourriez procéder :
-
Emballer votre application : Vous pouvez utiliser des outils tels que PyInstaller ou cx_Freeze pour emballer votre application Streamlit dans un fichier exécutable. Ces outils rassemblent tous les fichiers et bibliothèques nécessaires à votre application et les regroupent dans un seul fichier.
-
Créer un programme d'installation : Si vous souhaitez distribuer votre application à d'autres utilisateurs, vous voudrez peut-être créer un programme d'installation. Des outils tels que Inno Setup ou NSIS peuvent vous aider dans cette tâche.
-
Tester votre exécutable : Avant de distribuer votre application, assurez-vous de tester l'exécutable sur le système d'exploitation cible pour vous assurer qu'il fonctionne correctement. Voici une commande d'exemple pour créer un exécutable à l'aide de PyInstaller:
pyinstaller --onefile --add-data='myapp:myapp' app.py
Partie 4: Déploiement sur Heroku
Heroku est une plateforme cloud qui vous permet de déployer, d'exécuter et de gérer des applications écrites dans différents langages de programmation. Voici un guide étape par étape sur la façon de déployer votre application Streamlit sur Heroku:
-
Créez un compte Heroku: Inscrivez-vous pour obtenir un compte Heroku gratuit si vous n'en avez pas déjà un.
-
Installez la CLI Heroku: L'interface de ligne de commande Heroku (CLI) est un outil qui vous permet de créer et de gérer vos applications Heroku directement depuis le terminal.
-
Préparez votre application pour Heroku: Heroku a besoin de deux fichiers supplémentaires pour déployer votre application Streamlit : un fichier
Procfile
et un fichiersetup.sh
. LeProcfile
indique à Heroku quelle commande utiliser pour démarrer votre application, et le fichiersetup.sh
configure votre environnement.
Voici à quoi peuvent ressembler votre Procfile
et votre setup.sh
:
web: sh setup.sh && streamlit run app.py
mkdir -p ~/.streamlit/
echo "\
[general]\n\
email = \"votre-email@domaine.com\"\n\
" > ~/.streamlit/credentials.toml
echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml
- Déployez votre application: Une fois votre application préparée, vous pouvez la déployer sur Heroku à l'aide de la CLI Heroku. Voici une séquence de commandes d'exemple pour déployer votre application:
git init
heroku create
git add .
git commit -m "Commit initial"
git push heroku master
Après ces étapes, votre application Streamlit devrait être en ligne sur Heroku!
Partie 5: Déploiement sur Google Cloud Platform
Google Cloud Platform (GCP) est un ensemble de services d'informatique en nuage qui s'exécute sur l'infrastructure utilisée par Google pour ses produits destinés aux utilisateurs finaux. Il offre un environnement robuste et évolutif pour déployer vos applications Streamlit.
Déploiement et sécurisation d'une application Streamlit sur GCP
Voici un guide étape par étape sur la façon de déployer votre application Streamlit sur GCP:
-
Créez un compte GCP: Si vous n'en avez pas déjà un, inscrivez-vous pour obtenir un compte GCP.
-
Créez un nouveau projet: Accédez à la console GCP et créez un nouveau projet.
-
Activez App Engine: Accédez à la section "App Engine" et activez-le pour votre projet.
-
Préparez votre application pour GCP: Tout comme pour Heroku, GCP nécessite un fichier
app.yaml
pour configurer votre application. Voici un exemple de fichierapp.yaml
pour une application Streamlit:
runtime: python39
instance_class: F2
automatic_scaling:
target_cpu_utilization: 0.65
entrypoint: streamlit run --server.port $PORT --server.enableCORS false app.py
- Déployez votre application: Une fois votre application préparée, vous pouvez la déployer sur GCP à l'aide de Google Cloud SDK. Voici une séquence de commandes d'exemple pour déployer votre application:
gcloud app deploy
Après ces étapes, votre application Streamlit devrait être en ligne sur GCP!
Partie 6: Construction d'applications Streamlit dans Amazon SageMaker Studio
Amazon SageMaker Studio est un environnement de développement intégré (IDE) entièrement intégré pour l'apprentissage automatique. Il fournit tous les outils nécessaires pour construire, entraîner et déployer rapidement des modèles d'apprentissage automatique.
Avantages de l'utilisation d'Amazon SageMaker Studio
-
Service entièrement géré: Amazon SageMaker Studio s'occupe de toute l'infrastructure sous-jacente, vous permettant de vous concentrer sur la construction et le déploiement de vos applications Streamlit.
-
Carnets Jupyter intégrés: Vous pouvez facilement créer des carnets Jupyter pour explorer et visualiser vos données.
-
Construction et formation de modèles: SageMaker Studio fournit des algorithmes intégrés et prend en charge les algorithmes personnalisés, ce qui facilite la construction et la formation de vos modèles d'apprentissage automatique.
-
Déploiement de modèle: Une fois votre modèle entraîné, vous pouvez le déployer en un seul clic à partir de la console SageMaker Studio.
Partie 7: Déploiement sur les services d'applications Azure
Azure App Services est une plateforme entièrement gérée pour la création, le déploiement et l'évolutivité des applications web. Il prend en charge un large éventail de langages de programmation, dont Python, ce qui en fait un excellent choix pour le déploiement de vos applications Streamlit.
Déploiement d'une application Streamlit sur les services d'applications Azure
Voici un guide étape par étape sur la façon de déployer votre application Streamlit sur les services d'applications Azure:
-
Créez un compte Azure: Si vous n'en avez pas déjà un, inscrivez-vous pour obtenir un compte Azure.
-
Créez un nouveau service App: Accédez au portail Azure et créez un nouveau service App.
-
Configurez votre service App: Choisissez votre abonnement, votre groupe de ressources, un nom, une méthode de publication (Code), une pile d'exécution (Python) et un système d'exploitation.
-
Déployez votre application: Une fois votre service App configuré, vous pouvez déployer votre application Streamlit en utilisant l'interface de ligne de commande Azure ou Git. Voici une séquence de commandes d'exemple pour déployer votre application en utilisant l'interface de ligne de commande Azure:
az webapp up --sku F1 --name my-streamlit-app
Après ces étapes, votre application Streamlit devrait être en ligne sur les services d'applications Azure!
Partie 8: Déploiement de pipelines d'apprentissage automatique sur AWS Fargate
AWS Fargate est un moteur de calcul sans serveur pour les conteneurs. Il fonctionne avec Amazon Elastic Container Service (ECS) et Amazon Elastic Kubernetes Service (EKS), ce qui facilite le déploiement d'applications conteneurisées.
Déploiement d'une application PyCaret et Streamlit sur AWS Fargate
Voici un guide étape par étape sur la façon de déployer un pipeline d'apprentissage automatique développé avec PyCaret et une application Streamlit sur AWS Fargate:
- Créez un fichier Dockerfile: Votre Dockerfile doit inclure les instructions nécessaires pour installer PyCaret, Streamlit et toutes les autres bibliothèques requises. Voici un exemple de base :
## Utilisez une image parent officielle de Python en tant qu'image
FROM python:3.7-slim
## Définissez le répertoire de travail dans le conteneur sur /app
WORKDIR /app
## Ajoutez le contenu du répertoire actuel dans le conteneur sous /app
ADD . /app
## Installez les packages nécessaires spécifiés dans requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
## Rendez le port 80 disponible pour le monde extérieur à ce conteneur
EXPOSE 80
## Exécutez app.py lorsque le conteneur démarre
CMD streamlit run --server.port 80 app.py
-
Construisez et envoyez votre image Docker: Vous pouvez utiliser l'interface de ligne de commande Docker pour construire votre image Docker et l'envoyer vers un registre de conteneurs tel qu'Amazon Elastic Container Registry (ECR).
-
Créez une nouvelle définition de tâche dans AWS Fargate: Une définition de tâche est un fichier texte au format JSON qui décrit un ou plusieurs conteneurs constituant votre application. Il inclut l'image du conteneur à utiliser, les CPU et la mémoire nécessaires, la configuration réseau, et plus encore.
-
Exécutez votre tâche: Une fois que votre définition de tâche est configurée, vous pouvez exécuter votre tâche dans AWS Fargate. Votre application Streamlit devrait maintenant être accessible à l'adresse IP publique de votre tâche.
Voici une séquence de commandes d'exemple pour construire votre image Docker et l'envoyer vers Amazon ECR :
$(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
Après ces étapes, votre application PyCaret et Streamlit devrait être disponible sur AWS Fargate !
Partie 9 : Résolution des erreurs de déploiement
Le déploiement d'une application Streamlit peut parfois être une tâche difficile, notamment lorsque vous rencontrez des erreurs difficiles à déchiffrer. Cependant, comprendre ces erreurs courantes peut vous aider à les résoudre de manière efficace.
Erreurs courantes de déploiement et leurs solutions
- ModuleNotFoundError: Cette erreur se produit lorsque Python ne parvient pas à trouver un module dont votre application a besoin pour s'exécuter. Pour résoudre ce problème, assurez-vous que tous les modules requis sont répertoriés dans votre fichier
requirements.txt
.
ModuleNotFoundError: No module named 'module-name'
- StreamlitAPIException: Cette erreur se produit lorsqu'il y a un problème avec votre code Streamlit. Vérifiez le message d'erreur pour obtenir des détails et ajustez votre code en conséquence.
StreamlitAPIException: 'nom-de-fonction' n'est pas une commande Streamlit valide.
- Échecs de construction Docker: Si votre construction Docker échoue, cela est souvent dû à des problèmes dans le Dockerfile. Vérifiez votre Dockerfile pour tout erreur de syntaxe ou instruction manquante.
ERROR: Service 'nom-du-service' failed to build
- Délais de déploiement dépassés: Si votre déploiement prend trop de temps, il peut expirer. Cela peut être dû à une connexion Internet lente, à une image Docker volumineuse ou à un processus de construction complexe. Essayez d'optimiser votre Dockerfile ou d'augmenter la limite de temps d'attente.
Error: Deployment timed out.
N'oubliez pas, la clé pour résoudre les problèmes consiste à comprendre le message d'erreur. Ne soyez pas intimidé par le jargon technique. Analysez-le, comprenez ce qu'il dit et vous pourrez trouver une solution.
Conclusion
Le déploiement d'une application Streamlit est une étape cruciale dans le processus de développement d'applications de données. Cela permet à votre application d'être accessible au monde entier, facilitant l'interaction de l'utilisateur et son application réelle. Dans ce guide, nous avons exploré différentes plateformes pour déployer votre application Streamlit, notamment Streamlit Community Cloud, Heroku, AWS, Google Cloud, Azure, et bien d'autres.
Chaque plateforme a ses propres forces et faiblesses, et la meilleure dépend de vos besoins spécifiques et de vos circonstances. Nous vous encourageons à explorer ces options, à les essayer et à trouver celle qui correspond le mieux à vos besoins. Bon déploiement !
Avez-vous entendu parler de cet outil incroyable d'analyse de données et de visualisation de données qui transforme votre application Streamlit en Tableau ?
PyGWalker (opens in a new tab) est une bibliothèque Python qui vous aide à intégrer facilement une interface utilisateur similaire à Tableau dans votre application Streamlit.
FAQ
-
Comment déployer mon application Streamlit ?
Le déploiement d'une application Streamlit consiste à empaqueter votre application et ses dépendances, puis à la télécharger sur une plateforme d'hébergement. Les étapes exactes dépendent de la plateforme que vous utilisez. Ce guide fournit des instructions détaillées pour plusieurs plateformes populaires.
-
Comment héberger localement une application Streamlit ?
Pour héberger localement une application Streamlit, il vous suffit d'exécuter la commande
streamlit run votre-application.py
dans votre terminal. Assurez-vous d'être dans le répertoire correct et d'avoir toutes les dépendances nécessaires installées. -
Combien de temps faut-il pour déployer une application Streamlit ?
Le temps de déploiement d'une application Streamlit peut varier en fonction de la taille de votre application, de la vitesse de votre connexion Internet et de la plateforme que vous utilisez. Cependant, avec une bonne configuration, cela peut souvent être fait en quelques minutes.
-
Streamlit est-il meilleur que Flask ?
Streamlit et Flask sont tous deux d'excellents outils, mais ils servent à des fins différentes. Streamlit est conçu pour créer rapidement et facilement des applications de données, tandis que Flask est un framework Web plus général qui vous donne plus de contrôle sur votre application. Le meilleur outil dépend de vos besoins spécifiques.