top of page

Les grandes étapes d’un projet Streamlit

  • Writer: MYPE SAS
    MYPE SAS
  • Jul 22
  • 17 min read

Streamlit


Streamlit est une bibliothèque Python très utilisée pour le développement d’applications web et la visualisation de données. Elle est open-source et assez simple d’utilisation. Elle est particulièrement performante pour le partage des visuels ou des applications interactives, grâce à la possibilité d’héberger gratuitement un projet Streamlit sur un serveur Streamlit Cloud. On obtient ensuite un lien, qu’on peut envoyer à d’autres utilisateurs afin qu’ils aient accès à l’application sans pouvoir en modifier le code.


Sommaire de cet article


Dans ce tutoriel, nous allons utiliser Streamlit pour développer une enquête de satisfaction. Nous développerons chaque étape de la création du projet, afin de fournir au lecteur tous les outils dont il aura besoin pour créer son propre projet Streamlit sur-mesures.


Voici les étapes du tutoriel :

  • Création du projet Python

  • Code des questions du questionnaire

  • Sauvegarde des réponses dans un Google Sheets

  • Versioning avec GitHub

  • Déploiement avec Streamlit Cloud


Création du projet Python


Python est un langage très utilisé dans l’industrie. Ceci est dû au grand nombre de bibliothèques Python qui existent, qui permettent de mener à bien des projets très divers, et à la grande communauté de développeurs Python, présents sur les forums Internet par exemple. En utilisant Python et la bibliothèque Streamlit pour déployer un questionnaire de satisfaction ou une autre application Web, vous aurez l’opportunité d’avoir un code clair, lisible par un grand nombre de développeurs, et efficient.


Vous trouverez sur le site https://www.expertpython.fr/ des formations sur les bases de Python, sur Python pour la Data Science et sur Python pour le Machine Learning entre autres. Ainsi, vous disposez de ressources pour former vos employés afin qu’ils soient en mesure de développer rapidement un projet d’application Web comme celui-ci.


Dans ce tutoriel, on commence donc par créer un projet Python en local, c’est-à-dire sur notre ordinateur (et non pas encore sur un serveur externe). Dans ce tutoriel, on utilisera PyCharm, mais de nombreux autres IDE (comme VSCode, Pyzo, etc.) permettent la création d’un projet Python.


On utilise le bouton ‘New Project’.

ree

On choisit un emplacement en local, on crée un dossier et on y crée notre projet Python, qu’on appellera qu_satisfaction. On sélectionne l’interpréteur ‘Project venv’.

ree

On obtient ainsi un projet vide, semblable à celui-ci :

ree

On va remplir ce projet. On crée en premier lieu un fichier ‘requirements.txt’, dans lequel on citera toutes les bibliothèques python nécessaires à l’exécution du projet, la première étant Streamlit. L’existence de ce fichier ‘requirements.txt’ permettra à tous les développeurs qui travailleront éventuellement sur ce projet, d’installer rapidement toutes les bibliothèques nécessaires au projet. Pour créer ce fichier, on fait un clic droit sur ‘qu_satisfaction’, dans l’explorateur sur la gauche, puis on sélectionne ‘New’ puis ‘File’.

ree

On nomme notre nouveau fichier :

ree

Dans ce fichier ‘requirements.txt’, on va d’abord citer la bibliothèque Streamlit, et on rajoutera des bibliothèques si nécessaire.

ree

Maintenant, on va télécharger toutes les bibliothèques citées dans le fichier ‘requirements.txt’. Pour ce faire, on ouvre la console, en cliquant sur le bouton ‘Terminal’ en bas à gauche de l’écran :

ree

Ensuite, on tape l’instruction ‘pip install -r requirements.txt’ dans la console :

ree

Maintenant, on va créer le fichier principal du projet, qui va contenir tout le code de notre questionnaire. On fait un clic droit sur la racine du projet ‘qu_satisfaction’, on sélectionne ‘New’, puis ‘Python File’.

ree

On nomme notre fichier python :

ree

On obtient un fichier ‘app.py’ vide, dans l’arborescence suivante :

ree

Code des questions du questionnaire


Dans cette partie se trouve le code du questionnaire. Ce code est hautement customisable. Vous verrez dans ce tutoriel une variété de types de questions (text_input, radio, slider…), et vous pourrez bien sûr utiliser tous ces types de question et changer le texte ou l’apparence comme bon vous semble dans un cas d’utilisation réel. Python permet en effet de customiser facilement son application Web, ce qui permet de cibler précisément les clients ou le public visé par l’application.


Ici, je vais créer un questionnaire de satisfaction simple pour l’exemple.


On va maintenant écrire le code de notre questionnaire :

ree

Dans ce code, on commence par réaliser l’import de la bibliothèque Streamlit.


Puis, on choisit un titre à notre questionnaire.


Ensuite, on choisit les questions qui vont apparaître sur la page du questionnaire. On peut utiliser des objets ‘text_input’, ‘number_input’, ‘radio’ (qui demande une sélection entre plusieurs choix), ‘slider’ (qui demande de déplacer un curseur entre deux extrêmes) ou ‘text_area’ par exemple.


A partir de la ligne 15, on gère ce qui se passe lorsque l’utilisateur clique sur le bouton ‘Soumettre’. Si l’utilisateur n’a pas rentré son nom, son âge ou son genre, un message d’erreur s’affiche. Si tous les champs sont remplis, un message de succès s’affiche. On verra plus tard comment enregistrer les réponses au questionnaire dans un fichier Google Sheet.


Notre application n’est pas encore publiée en ligne, mais elle est exécutable en local, c’est-à-dire que vous pouvez exécuter cette application sur un ordinateur sur lequel serait stocké son code. C’est d’ailleurs une bonne pratique de tester le questionnaire en local, avant d’avancer dans ce tutoriel. Pour exécuter notre application en local, on exécute dans la console la commande ‘streamlit run app.py’ :

ree

Une nouvelle page s’ouvre dans un navigateur, et le questionnaire s’affiche. Si une erreur s’affiche, débuguez-la avant de passer à la suite.


Sauvegarde dans Google Sheets


Dans cette partie, on va mettre en place l’enregistrement des réponses au questionnaire dans un fichier Google Sheets. Comme Python, l’environnement Google (Google Drive, Gmail, Google Sheets…) est très utilisé dans l’industrie. En effet, c’est une solution efficace, performante et facile d’utilisation.


En stockant les réponses au questionnaire dans un fichier Google Sheets, on crée un espace de stockage commun (le fichier Google Sheets), qui pourra être rempli automatiquement dès que les clients enverront leurs réponses au questionnaire depuis leurs ordinateurs respectifs. Cette centralisation des réponses permet l’analyse des réponses au questionnaire par une équipe commerciale, qui n’aura accès qu’au fichier Google Sheets, sans avoir à comprendre le code.


Pour mettre en place cette solution, on va d’abord créer un fichier Google Sheets qui servira à stocker les réponses au questionnaire, puis on va utiliser la console Google Cloud pour autoriser notre questionnaire à modifier ce fichier Google Sheets.


Création du Google Sheets


Tout d’abord, on se rend dans son espace Google (personnel ou professionnel) et on crée un fichier Google Sheets, à l’aide du bouton ‘Nouveau’ :

ree

On obtient un fichier Google Sheets vierge. On le renommera ‘reponses_qu_satisfaction’ :

ree

Ensuite, on entre dans la première ligne du Google Sheets les intitulés de tous les champs à enregistrer. Ces champs sont les réponses à chaque question du questionnaire, ainsi qu’une date et une heure à laquelle l’utilisateur enverra sa réponse :

ree

On note ensuite l’identifiant de la feuille Google Sheets. Pour trouver cet identifiant, on reste sur la feuille Google Sheets ‘reponses_qu_satisfaction’, et on regarde l’URL affichée en haut de la fenêtre du navigateur, pour note la partie de cette URL qui se trouve entre /d et /edit. Il s’agit de l’identifiant de la feuille Google Sheets.

ree

Dans mon cas, cet identifiant est : 1NP0dZi_9qIQjQlqK0Rt9euDashU6yZU1aJ4VZqrkNZ0 .


Cet identifiant est à conserver, car il nous sera utile plus tard.


Création d’un compte de service


Ensuite, on va ouvrir la console Google Cloud (https://console.cloud.google.com/) afin de créer un compte de service, qui nous permettra d’écrire automatiquement dans la feuille Google Sheets les réponses au questionnaire. On s’authentifie sur Google Cloud avec le même compte Google que lorsqu’on a créé la feuille Google Sheets. Puis, on clique sur ‘Sélectionnez un projet’ :

ree

Une fenêtre s’ouvre, dans laquelle on va cliquer sur ‘Nouveau projet’ :

ree

On crée maintenant notre nouveau projet. On le nomme ‘sync-reponses-qu-satisfaction’, et on clique sur le bouton ‘Créer’.

ree

On accède ensuite à un tableau de bord comme celui-ci :

ree

Dans notre compte Google Cloud Services, on va activer les APIs Google Sheets et Google Drive, qui vont nous permettre d’interagir avec notre fichier Google Sheets. En général, les APIs (cf article https://www.expertpython.fr/post/se-connecter-%C3%A0-une-api-avec-python ) permettent d’utiliser des services et de mobiliser des ressources externes, depuis un autre logiciel.


On clique sur ‘Accéder à l’aperçu des API’ :

ree

Puis sur ‘Activer les API et les services’ :

ree

On va activer les APIs Google Sheets et Google Drive. On commence par chercher l’API Google Sheets :

ree

On clique dessus, puis sur le bouton ‘Activer’ :

ree

Ensuite, on retourne sur la ‘Bibliothèque’ dans ‘API et services activés’ :

ree

Et on cherche l’API Google Drive :

ree

On clique dessus, puis sur le bouton ‘Activer’ :

ree

Maintenant, on va créer le compte de service qui va nous permettre de nous connecter au Google Sheets ‘reponses_qu_satisfaction’. Un compte de service est comme un utilisateur Google fictif, auquel on va pouvoir attribuer des permissions sur des objets comme des Google Sheets. On clique sur ‘Présentation Cloud’, puis sur ‘Comptes de service’ :

ree

On atterrit sur une page recensant tous les comptes de service créés jusqu’ici. Dans mon cas, il n’y en a pas :

ree

On clique sur le bouton ‘Créer un compte de service’ :

ree

On obtient une boîte de dialogue, dans laquelle on va donner le nom ‘app_qu_satisfaction’ à notre compte de service. On laisse les autres champs se remplir automatiquement, et on clique sur ‘Créer et continuer’.

ree

On laisse les valeurs par défaut dans la section ‘Autorisations’ et dans la section ‘Comptes principaux avec accès’, et on clique sur ‘OK’ :

ree

On retourne dans notre liste des comptes de service, et on y voit maintenant notre nouveau compte de service :

ree

On va maintenant attribuer une clé à ce compte de service, qui nous permettra d’enregistrer cette clé dans notre projet Python, pour autoriser l’application ‘qu_satisfaction’ à écrire dans le Google Sheets. On clique sur les trois petits points sur la ligne de notre compte de service, puis sur ‘Gérer les clés’ :

ree

On va maintenant créer une clé. On clique sur le bouton ‘Ajouter une clé’, puis sur ‘Créer une clé’ :

ree
ree

On sélectionne le type ‘JSON’ :

ree

Un fichier .json est automatiquement téléchargé. Il contient les identifiants d’authentification qui nous permettent d’utiliser ce compte de services. On garde ce fichier .json pour l’instant, et on enregistrera plus tard les informations d’authentifications qu’il contient, dans notre projet Python.

ree

On copie maintenant l’adresse e-mail associée à notre compte de service. C’est à cette adresse-là que nous allons attribuer des autorisations sur le fichier Google Sheets. Dans mon cas, cette adresse est : app-qu-satisfaction@sync-reponses-qu-satisfaction.iam.gserviceaccount.com :

ree

On retourne maintenant sur notre feuille Google Sheets ‘reponses_qu_satisfaction’, et on clique sur ‘Partager’.

ree

On attribue à l’adresse e-mail de notre compte de service l’accès ‘Editeur’ à notre Google Sheets :

ree

Connexion au compte de service Google Cloud depuis le projet Python


On va maintenant faire le lien entre notre compte de service nouvellement créé, et le code Python. L’objectif est d’autoriser notre projet Python à écrire les réponses du questionnaire dans notre fichier Google Sheets. On va donc devoir stocker dans notre projet Python les informations d’authentification au compte de service.


En effet, pour nous connecter au compte de service nouvellement créé depuis notre projet Python, on aura besoin d’informations d’authentification, comme une clé. Cette clé ne doit pas être visible par les autres utilisateurs, car elle permet l’écriture dans le fichier Google Sheets. L’objectif est que cette clé soit incluse dans le projet Python, afin que l’application puisse écrire dans le Google Sheets, mais que les utilisateurs n’accèdent pas à la clé privée. Ainsi, les clients pourront remplir le questionnaire, leur réponse étant enregistrée dans le fichier Google Sheets, mais ils ne pourront pas accéder directement au fichier Google Sheets, et ils ne verront pas non plus la clé qui donne l’autorisation d’écrire dans le fichier.


Afin que les informations d’authentification au compte de service restent secrètes, on ne va pas les mettre en ligne sur GitHub (outil de versioning et d’enregistrement de code sur le cloud). On va donc stocker ces informations d’authentification dans un fichier ‘.streamlit/secrets.toml’, qui ne sera pas copié par GitHub.


On commence par créer un dossier .streamlit. On fait un clic droit sur la racine de notre projet Python, puis on clique sur ‘New’ et sur ‘Directory’. On nomme ensuite notre dossier ‘.streamlit’ :

ree

On obtient ensuite l’arborescence suivante, dans le panneau Explorateur à gauche de l’écran :

ree

On crée ensuite le fichier ‘secrets.toml’. On fait un clic droit sur notre dossier ‘.streamlit’, puis on clique sur ‘New’ et sur ‘File’. On choisit comme nom ‘secrets.toml’.

ree
ree

On obtient un fichier ‘secrets.toml’ vierge, comme celui-ci :

ree

On ouvre ensuite le fichier .json qui s’est téléchargé automatiquement lorsqu’on a créé la clé liée à notre compte de service. Ce fichier contient les informations d’authentification au compte de service. Cependant, il est au format .json, tandis qu’on a besoin des informations au format .toml pour les enregistrer dans notre fichier ‘secrets.toml’. On va donc devoir copier-coller le contenu du fichier .json dans notre fichier ‘secrets.toml’, puis y faire les modifications suivantes :

  • enlever les accolades au début et à la fin du code

  • désindenter tout le texte (c’est-à-dire le ramener tout à gauche)

  • écrire [google] au début du fichier

  • remplacer les ‘ :’ par des ‘=’

  • enlever les virgules à la fin de chaque ligne

  • enlever les guillemets à chaque titre de champ (comme type, project_id, etc.)

  • mettre des triples guillemets autour de la clé privée (‘private_key’)

  • enfin, rajouter sheet_id = « … » à la fin du fichier, et compléter avec l’identifiant de votre fichier Google Sheets, noté lors de sa création. Si vous l’avez oublié, vous pourrez le retrouver dans l’URL de votre fichier Google Sheets.


Votre fichier ‘secrets.toml’ contient des informations de connexion confidentielle. Il doit ressembler à peu près à ceci :

ree

Maintenant, on va modifier le code pour y ajouter l’enregistrement des réponses au questionnaire dans la feuille Google Sheets. On aura besoin pour cela des bibliothèques python Gspread et Google-auth, qu’on ajoute donc au fichier ‘requirements.txt’ :

ree

On installe ensuite les bibliothèques listées dans le fichier ‘requirements.txt’, à l’aide de la commande ‘pip install -r requirements.txt’ :

ree

Maintenant, on va modifier notre fichier ‘app.py’. Voici la version après modifications :

ree
ree

On a ajouté en début de code l’import des bibliothèques supplémentaires.


Ensuite, entre les lignes 6 et 14, on accède au compte de service, et au fichier Google Sheets que l’on souhaite pouvoir modifier. Ces lignes fonctionnent grâce aux informations confidentielles stockées dans le fichier ‘secrets.toml’.


Puis, en fin de fichier, entre les lignes 45 et 48, si l’utilisateur a bien rempli tous les champs, on a rajouté un code d’enregistrement de la réponse dans le fichier Google Sheets. On commence par récupérer la date et l’heure d’envoi de la réponse, puis on enregistre dans le fichier Google Sheets toutes les informations récoltées.


On va maintenant tester notre application en local. On utilise pour ce faire l’instruction ‘streamlit run app.py’ :

ree

Une fenêtre s’ouvre dans le navigateur, et le questionnaire apparaît :

ree

On peut tester l’enregistrement des réponses en remplissant le questionnaire avec des valeurs test, puis en regardant dans le fichier Google Sheets si la réponse a bien été enregistrée. Si vous obtenez une erreur ou si l’application ne fonctionne pas comme attendu, débuguez-la avant de passer à la suite.


Versioning avec GitHub


GitHub est un outil de versioning qui permet de mettre-à-jour dynamiquement du code, de régler les éventuels conflits de version du code et de sauvegarder le code sur un cloud. Ainsi, plusieurs collaborateurs peuvent participer à la rédaction du code en même temps, depuis des ordinateurs différents, puis tout mettre en commun dans une version cohérente et fonctionnelle, qui sera sauvegardée en ligne ainsi que sur leurs ordinateurs respectifs.


De plus, GitHub est un des modes de stockage de code reconnu par Streamlit Cloud, ce qui nous servira plus tard dans ce tutoriel. Comme on le verra plus tard, Streamlit Cloud est un cloud de serveurs, gratuitement mis à disposition des développeurs utilisateurs de la bibliothèque python Streamlit, qui souhaitent mettre en ligne leur application Web. Streamlit Cloud est utile pour générer un lien Web unique qui permettra aux clients d’accéder à notre questionnaire, depuis n’importe quel ordinateur.


Sur GitHub, un projet de code est stocké dans un répertoire (‘repository’) accessible par les personnes autorisées qui disposent du lien. Ce répertoire est mis-à-jour par chaque utilisateur, chacun étant sur une ‘branche’ différente. S’il y a un conflit entre plusieurs versions du code, on peut fusionner les versions avec la commande ‘merge’. Pour changer de branche, on utilise la commande ‘checkout’. Pour mettre-à-jour le code sur le répertoire GitHub en ligne, on modifie le code sur son ordinateur en local, on ouvre une console et on tape la commande ‘commit’, qui répertorie les différences entre le code en local et le code dans le répertoire en ligne, puis la commande ‘push’, qui applique ces changements sur le répertoire en ligne.


Avant de préparer un répertoire GitHub en ligne et d’y envoyer le code de notre projet Python, on va créer un fichier ‘.gitignore’. Ce fichier liste les fichiers dans notre projet qu’on ne souhaite pas que GitHub copie dans un répertoire en ligne. C’est le fichier ‘secrets.toml’ qu’on va citer dans ce fichier ‘.gitignore’, pour éviter que notre fichier ‘secrets.toml’, qui contient la clé secrète de notre compte de service Google, soit mis-en-ligne et accessible par d’autres personnes (par exemple si on souhaite un jour rendre notre répertoire GitHub public, on ne souhaite pas que la clé privée du compte de service se trouve dedans). On fait donc un clic droit sur la racine du projet ‘qu_satisfaction’, puis on clique sur ‘New’ et sur ‘File’.

ree

On nomme notre fichier ‘.gitignore’ :

ree

Ensuite, on indique le chemin vers notre fichier ‘secrets.toml’ dans notre ‘.gitignore’ :

ree

Maintenant, on va pouvoir indique à GitHub que notre code est un projet de code, pour qu’il crée un répertoire en local. Plus tard, on pourra créer un répertoire GitHub en ligne, et l’associer à notre répertoire en local, pour pouvoir les synchroniser après chaque mise-à-jour du code en local. Pour créer un répertoire GitHub en local, on ouvre d’abord une console, à l’aide du bouton ‘Terminal’ en bas à gauche de l’écran. C’est dans la console qu’on va taper toutes nos instructions GitHub :

ree

Puis, on commence par initialiser GitHub avec la commande ‘git init’ :

ree

Ensuite, on ajoute tous les fichiers de notre dossier ‘qu_satisfaction’ à notre répertoire en local. On utilise pour cela la commande ‘git add .’ (toujours dans la console) :

ree

On prépare ensuite notre premier ‘commit’, c’est-à-dire notre premier lot de modification de code, qui correspond à la v0 de notre projet Python. Si on apporte des modifications ultérieures au code, on réalisera de nouveaux ‘commits’. Grâce au paramètre ‘-m’, on peut écrire un message descriptif du ‘commit’, qui apparaît en bleu dans la commande suivante :

ree

Maintenant, on va créer un répertoire GitHub en ligne. Pour cela, on se rend sur : https://github.com/ et on s’authentifie, pour accéder à son espace personnel. On atterrit sur un ‘Dashboard’ avec une liste de répertoires et un bouton ‘New’, comme ici :

ree

On clique sur ce bouton ‘New’ et une fenêtre de création de répertoire s’ouvre. On nomme notre répertoire ‘questionnaire_satisfaction’ et on le publie en privé, si on ne souhaite pas que les internautes y aient accès :

ree
ree

On obtient ensuite un nouveau répertoire, qui porte bien le nom qu’on lui a donné, et qui est vide pour l’instant :

ree

Ensuite, pour pouvoir lier notre répertoire en ligne à notre répertoire en local, on va avoir besoin d’un ‘Personal Access Token’, ou PAT. Les PAT sont des clés de sécurité (c’est-à-dire une suite de lettres et de chiffres aléatoires) qu’on crée sur le site de GitHub et qu’on collera ensuite dans la console de notre projet Python, pour prouver notre identité et autoriser les ‘git push’.


Utilisation d’un token (‘Personal Access Token’, PAT) GitHub


On va donc créer un PAT depuis le site GitHub. On clique sur l’icône de notre profil en haut à droite de l’écran, et on obtient un menu déroulant des actions possibles. On clique ensuite sur ‘Settings’ :

ree

Un autre menu déroulant s’ouvre. On va jusqu’en bas, jusqu’à cliquer sur ‘Developer settings’ :

ree

On obtient un nouveau menu, avec trois lignes, et on clique sur ‘Personal access tokens’, puis sur ‘Tokens (classic)’ :

ree

On clique ensuite sur le bouton ‘Generate new token’, puis sur ‘Generate new token (classic)’ :

ree

On attribue à notre nouveau PAT toutes les permissions nécessaires sur les répertoires GitHub, puis on clique sur le bouton ‘Create’. Après avoir cliqué sur le bouton ‘Create’ pour créer notre PAT, on obtient une liste des PAT existants. Le dernier de la liste est celui qu’on vient de créer.

ree

On utilise le bouton ‘Copier’ pour copier notre nouveau token dans le presse-papier, avant de le coller dans un document Word par exemple. Au même titre que la clé privée du compte de service Google, ce token est confidentiel. Vous devez le sauvegarder dans un document que vous conserverez, et que vous ne transmettrez à personne. Sinon, la personne aura accès à votre compte GitHub et pourra modifier tous vos répertoires en ligne. Si vous compromettez un token PAT, vous pourrez toujours revenir dans les paramètres de votre compte GitHub en ligne, et supprimer le token.


Maintenant qu’on a créé un token PAT et qu’on l’a collé dans un document Word, on retourne sur la page de notre répertoire en ligne. Notre objectif est de copier l’adresse HTTPS de notre répertoire en ligne, ce qui va nous permettre de lier notre répertoire en local (créé plus tôt avec la commande ‘git init’) à ce répertoire en ligne. On pourra ensuite remplir notre répertoire en ligne avec le code dont on dispose en local. Depuis la page de notre répertoire en ligne, on clique donc sur le bouton ‘Code’ pour afficher l’URL HTTPS du répertoire en ligne :

ree

On utilise le bouton ‘Copier’ représenté par deux petits carrés superposés, juste à droite de l’URL :

ree

Ensuite, on retourne dans notre projet PyCharm, dans la console, et on lie notre répertoire en local à notre répertoire en ligne, grâce à la commande ‘git remote add origin https://TOKEN_PERSONNEL@github.com/SUITE_DE_L_URL_HTTPS_du_répertoire_en_ligne’. Dans mon cas, cela donne :

git remote add origin https://MON_TOKEN@github.com/elisesuspene/questionnaire_satisfaction.git


Ensuite, on renomme la branche actuelle en ‘main’ (nom classique de la branche principale dans un projet GitHub), avec la commande ‘git branch -M main’ :

ree

Enfin, on envoie notre code, stocké plus haut dans un ‘commit’, sur le répertoire en ligne, grâce à la commande ‘git push -u origin main’ :

ree

On retourne sur la page de notre répertoire en ligne, on actualise la page, et on constate que notre code s’est bien enregistré sur le répertoire en ligne : le ‘git push’ a bien fonctionné :

ree

Déploiement avec Streamlit Cloud


Maintenant que notre application est enregistrée dans un répertoire GitHub en ligne, on va pouvoir utiliser Streamlit Cloud pour le déploiement de notre questionnaire. Streamlit Cloud met à disposition gratuitement des serveurs sur lesquels on peut héberger une application Streamlit. On obtient ainsi un lien vers l’application qui est exécutée depuis un serveur, au lieu d’être exécutée en local.


Grâce à Streamlit Cloud, on peut ainsi obtenir un lien unique d’accès au questionnaire. Ce lien pourra ensuite être transformé en QR Code (grâce à un outil gratuit en ligne), et être relayé sur les réseaux sociaux, sur des flyers, etc. Ensuite, les clients qui obtiendront ce lien pourront remplir le questionnaire directement, sur leur ordinateur personnel et à la date de leur choix, et toutes les réponses seront enregistrées dans le fichier Google Sheets unique créé plus tôt.


On se rend donc sur la page d’accueil de Streamlit Cloud : https://streamlit.io/cloud et on clique sur le bouton ‘Join Community Cloud’ :

ree

On obtient une fenêtre d’authentification, et on clique sur ‘Continue to sign-in’ :

ree

On clique ensuite sur le bouton ‘Continue with GitHub’ :

ree

Une fenêtre s’ouvre, qui nous demande de confirmer l’autorisation d’accès de Streamlit Cloud à notre compte GitHub, et on clique sur ‘Authorize streamlit’ :

ree

On s’authentifie ensuite à notre compte GitHub. Ensuite, on crée notre compte Streamlit Cloud, en remplissant nos informations personnelles de base :

ree

Une page s’ouvre alors, qui contient toutes les applications déployées sur Streamlit Cloud avec notre profil. Il n’y en a pour l’instant aucune. On clique sur le bouton ‘Create app’, en haut à droite de l’écran :

ree

On souhaite utiliser notre répertoire GitHub en ligne en tant que source de code. On clique donc sur le bouton ‘Deploy a public app from GitHub’ :

ree

S’ouvre ensuite une fenêtre dans laquelle on doit choisir le répertoire GitHub dans lequel se trouve le code à déployer :

ree

Seuls les répertoires publics apparaissent. Comme j’avais choisi de garder mon répertoire GitHub en ligne privé et que je ne souhaite pas le rendre public, je dois autoriser Streamlit Cloud à accéder aussi à mes répertoires privés. Pour ce faire, on clique sur l’icône de notre profil, en haut à gauche de l’écran, puis sur ‘Settings’ :

ree

Dans ‘Linked accounts’, un message intitulé ‘Private access’ indique que Streamlit Cloud n’a effectivement pas accès aux répertoires GitHub privés. On clique sur ‘Connect here’ pour y remédier :

ree

On s’authentifie à GitHub, et les permissions sont ainsi accordées.

Maintenant, les répertoires GitHub privés apparaissent aussi, et on peut sélectionner notre répertoire ‘questionnaire_satisfaction’. On sélectionne aussi la branche ‘main’ et le fichier python ‘app.py’. L’URL de l’application se remplit automatiquement :

ree

On peut copier cette URL, qui est le lien de notre application. Avec ce lien, n’importe quel utilisateur doit pouvoir remplir cette enquête de satisfaction. Dans mon cas, l’URL de mon application est : https://questionnairesatisfaction-of9pmdwddvl2unf97j6zhh.streamlit.app/ .


Ensuite, on clique sur le bouton de validation, et l’application se lance. Cependant, un problème survient : le serveur Streamlit Cloud n’a pas accès à la clé privée de notre compte de service Google. C’est normal, car on n’a pas copié le fichier ‘secrets.toml’ dans notre répertoire GitHub (on a d’ailleurs bien fait) :

ree

Pour remédier à ce problème, on va simplement rentrer manuellement nos informations secrètes dans Streamlit Cloud, qui ne les rendra pas publiques. Pour cela, on clique sur ‘Manage app’, puis sur les trois petits points, puis sur ‘Settings’ :

ree

Dans ‘App settings’, on clique ensuite sur ‘Secrets’. On obtient une zone de texte vide, dans laquelle on va coller le contenu de notre fichier ‘secrets.toml’, avant de cliquer sur ‘Save changes’ en bas de la fenêtre. Notre application Streamlit Cloud aura ainsi accès aux informations d’authentification au compte de service Google, mais ces informations ne seront en aucun cas accessibles au public.

ree

Ne pas oublier de cliquer sur ‘Save changes’, tout en bas de la fenêtre :

ree

Maintenant, quand on relance l’application hébergée sur Streamlit Cloud, tout fonctionne :

ree

Enfin, dernière étape du déploiement, on va rendre notre application accessible à toute personne disposant du lien, afin que tous les clients à qui l’on pourrait donner le QR Code ou le lien du questionnaire, puissent le remplir.


Pour ce faire, on retourne sur Streamlit Cloud : https://streamlit.io/cloud et on reclique sur ‘Join Community Cloud’ :

ree

On accède ainsi à notre tableau de bord Streamlit Cloud, dans lequel apparaît notre application ‘questionnaire_satisfaction’ :

ree

On clique sur les trois petits points sur la ligne de notre application ‘questionnaire_satisfaction’, puis sur ‘Settings’ :

ree

Dans ‘App Settings’, on clique sur ‘Sharing’, puis on sélectionne ‘This app is public and searchable’. On clique ensuite sur ‘Save changes’ :

ree

Maintenant, toutes les personnes qui disposent du lien de notre application (https://questionnairesatisfaction-of9pmdwddvl2unf97j6zhh.streamlit.app/ dans mon cas) peuvent remplir le questionnaire.


--

Retrouvez d'autres contenus, et toutes nos formations sur : https://www.expertpython.fr/

 
 
 

3 Comments


Mv Crash
Mv Crash
5 hours ago

Il est fascinant de voir à quel point la frontière entre productivité et distraction numérique est devenue floue pour beaucoup d'entre nous. Cette dualité rend la gestion de nos journées particulièrement complexe, surtout quand chaque notification semble nous tirer dans une direction différente. Bien que la prise de conscience soit une première étape cruciale, la mise en place de stratégies concrètes pour reprendre le contrôle de notre attention reste un défi majeur. Pour ceux qui cherchent des méthodes pratiques pour mieux y parvenir, explorer des outils dédiés à l'optimisation du temps d'écran peut offrir des perspectives très utiles.

Like

Mv Crash
Mv Crash
2 days ago

L'idée que nos photos numériques contiennent bien plus d'informations que ce que nous voyons est souvent sous-estimée. C'est fascinant de penser à toutes les métadonnées qui accompagnent chaque cliché, de l'appareil utilisé à la date et même la localisation. Cela soulève la question de la facilité avec laquelle on peut accéder et interpréter ces données pour des raisons de confidentialité ou simplement pour mieux comprendre ses propres images. Pour ceux qui souhaitent explorer ces détails techniques de leurs photos, un bon outil pour lire les données EXIF peut être incroyablement utile.

Like

Mv Crash
Mv Crash
Nov 10

L'idée de mesurer l'impact des interactions sur la perception de la marque est fascinante, surtout lorsqu'on aborde la complexité des parcours clients non linéaires. Cela résonne particulièrement avec les défis que nous rencontrons pour quantifier la valeur réelle de chaque point de contact. Pour ceux qui cherchent à aller plus loin dans la compréhension de ces dynamiques et à optimiser leurs stratégies, explorer les solutions pour une meilleure gestion de la relation client peut offrir des perspectives intéressantes. Pour approfondir cette réflexion, je recommande de consulter les avancées en matière de solutions de gestion de la relation client, qui peuvent aider à structurer et analyser ces interactions complexes.

Like

Un formateur vous rappelle dans les 24h

Contact Expert Python

Laissez-nous vos coordonnées pour être rappelé dans les 24h.

bottom of page