Session du 30 mars 2023 à 20h00
Data Science & IA
Développement Web & Frameworks
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Connecter Django, API REST et Streamlit
-
Quelques questions
-
Un mot sur la distribution de ses programmes + un mot sur les plateformes comme Linode
-
Dataviz avec Plotly et streamlit
-
Le labyrinthe
00:00:00 :Et ensuite, je vous partage mon écran.Ok.Non non mais tu n'abstiens pas. Après, je te l'avais dit, les questions que tu commencesà poser sur Django, moi je commence à être largué, je connais Django, le refraimentetc. mais ce n'est pas ma spécialité donc là tu commences à rentrer dans des questions
00:00:58 :de formulaire, des choses que moi je maîtrise moins. Bon voilà, ça arrive, je n'ai pasde soucis à dire que des gens connaissent plus de choses que moi, ça me fait plaisirmême. Désolé Gabriel si j'arrive moins à te répondre sur tes questions Django,
00:01:21 :je t'avoue que je défile à Thibault tout ce qui est vraiment Django, formulaire etc.Mais voilà, du coup, je ne sais pas si vous avez des questions. Sur streamlit, tu peux
00:01:36 :accorder streamlit avec Django pour faire une interface ou non, ça ne va pas du touten même temps. En fait ça va ensemble mais si tu utilises les API, si tu utilises une
00:01:55 :API REST framework, tu peux faire des requêtes via streamlit. J'avais fait un mentorat,je crois, il faudrait que je le retrouve, je ne sais plus c'était lequel, mais enfait je n'ai pas trouvé le code qui correspond. Je ne sais pas, j'ai l'impression qu'il grésillait,
00:02:24 :je ne sais pas si c'est la personne. Je ne sais pas, les autres dites-moi. Ah c'estbon, j'ai dit bon, ça a l'air d'être mieux quand même. Sinon, je vais peut-être, je
00:02:38 :vais montrer sur mon github, parce qu'il y a un truc. En fait tu vois sur, alors, jevais montrer d'abord. Donc ça c'est une application, enfin c'est une API REST framework qui fait
00:03:14 :un suivi de mesures, ça je crois que je vous en avais déjà parlé. Et en fait j'ai uneautre application qui va gérer le front-end, ça va être du streamlite. Ici, je n'ai même
00:03:32 :pas touché. Moi je vais le faire, excusez-moi.Tu vois si par exemple tu as une API qui tourne, donc là en l'occurrence c'est une API quej'avais développée, et ben en fait tu peux, les API justement ça sert à faire des requêtesà des sites web sans passer par ton navigateur, et du coup tu peux tout à fait imaginer avoir
00:04:36 :une application streamlite qui tourne, et dans laquelle tu rentres des champs de formulaire.Tu vois par exemple j'avais mis, j'avais donné un exemple récemment à un étudiant.
00:04:48 :Tiens bon on va le faire directement là-dedans.Donc on va créer, si on crée par exemple un streamlite. Donc là j'ai un port que la
00:05:30 :bibliothèque, vous voyez assez grand là où il faut que je zoom. Port aznt. Il faut queje zoom. Ok normalement il devrait marcher. Ah il m'énerve. Donc là on va faire par
00:06:14 :exemple, juste on va voir si ça fonctionne. Vous connaissez un streamlite, j'en avaisparlé normalement. Ok donc en fait il va m'ouvrir une application. Dans le planning
00:06:46 :de ce soir j'avais prévu de vous montrer l'inode. En fait l'inode c'est un VPS, doncc'est pour Virtual Private Server, où en fait vous pouvez avoir un espace dédié enligne, donc c'est comme un espèce de serveur, donc c'est une machine Ubuntu, et puis vouspouvez lancer vos applications web sur cette machine là. Et comme cette machine là a
00:07:06 :un IP public, c'est-à-dire une adresse IP que vous pouvez atteindre depuis internet,et bien vous pouvez imaginer que vous balancez vos Django, vos applications web et toutça qui tournent avec un serveur, et vous vous n'avez plus qu'à y accéder via cetIP là. Donc ce qu'on peut faire, c'est faire une petite application streamlite et
00:07:26 :puis la mettre en ligne sur un compte genre l'inode. Donc en gros ici tu vois Gabrielpar rapport à ta question, là en fait j'ai une application streamlite qui tourne. Attends
00:07:39 :est-ce que je vais voir, attends j'ai mon API là. Ouais ça ça fonctionne par contre.Donc en gros tu vois ici, imagine t'as une API, donc là c'est l'URL de l'API que t'asdéfini pour, voilà il faut une autorisation, il faut un token, mais on va dire que je l'ai,
00:08:14 :et en gros ce que tu peux faire c'est tu peux dire bah dans mon application streamlite jepeux définir un champ ici dans lequel je vais lui renseigner l'URL et lui va me sortirune réponse. Donc là tu pourrais dire par exemple st... donc c'est du text input, là
00:08:33 :tu dis entrez votre URL et donc tu vas avoir une URL qui est ça, et ici il suffit justequ'après tu fasses un import request et du coup tu vas vouloir afficher, tu vas direafficher en mode JSON, st. JSON, request.get, je pense qu'on peut mettre un JSON là
00:09:07 :dessus, ça devrait être possible. Donc en fait ici si je retourne voir mon streamliteil me demande, non ça ça marche pas, là j'ai bien une interface, aïe pardon, qu'estce qu'il me...
00:09:46 :Donc en fait tu peux imaginer tu vois tu fais une interface comme ça, et donc ici tu renseignesl'adresse vers laquelle il y a ton API, ici, donc si je fais enter, et là bon bah j'aiun message d'erreur parce que en fait il n'y a pas de, sinon je pourrais du mettre plutôt
00:10:44 :un texte, moi j'ai une réponse 401 parce qu'en fait ici j'ai pas de, j'ai pas d'autorisation,mais en gros tu peux faire ça, c'est un peu ce que j'avais déjà expliqué, l'idéec'est en gros tu fais tout ton backend avec Django REST, par exemple, comme ça t'as tonAPI qui tourne, et tout ce qui est interface, formulaire, bouton d'action etc, bah tu le
00:11:13 :fais avec ton streamlite.Ok d'accord.Bah oui et du coup en fait j'ai eu une question, je sais plus de quel étudiant, mais c'estpar rapport à streamlite, c'est pas par rapport aux API, mais en gros on a souvent le trucoù en fait on développe un script sur notre PC, donc en local, je vais enlever ma caméra
00:11:34 :ça sert à rien.On a souvent le cas où en fait on développe un script sur notre machine locale, on estcontent ça fonctionne bien, par contre dès qu'on veut la distribuer ça devient un peucompliqué parce que vous pouvez vous dire bah soit la personne en face elle va pas savoir
00:11:53 :installer Python, si jamais je crée un exécutable bah c'est un peu relou parce qu'en faitimaginez que vous êtes sur Mac et que vous développez votre application sur Mac, bahl'exécutable il fonctionnera pas sur un Windows et vice versa, en plus quand vous faites çail faut tout encapsuler, c'est à dire il faut aller récupérer toutes les librairies
00:12:16 :dont vous avez besoin, donc ça veut dire que sur la machine sur laquelle vous voulezutiliser l'application il faut installer plein de packages additionnels, donc ça devientun peu l'enfer.
00:12:25 :Donc en gros moi en fait au début je faisais ça et maintenant j'ai arrêté d'essayerde développer des exécutables qui marchent en local, ce que j'aime bien faire c'est développersoit des applications directement avec Streamlit ou sinon carrément j'utilise des VPS, donccomme sur DigitalOcéan ou sur Linux vous pouvez créer des machines virtuelles qui
00:12:44 :seront accessibles en ligne et votre application elle tourne là dessus.Donc je trouve que c'est plus intéressant et maintenant en fait de nos jours avec toutce qui est cloud computing c'est dommage de ne pas en profiter.
00:12:56 :Donc pour ce qui est de Streamlit par exemple, si je vous montre, attendez c'est pas là,je vais vous connecter sur les applications.Est-ce que vous voyez assez? Donc là en fait c'est une application Streamlit, donc
00:13:45 :vous voyez que c'est un lien web, si vous voulez je peux vous l'envoyer ici, c'estune application qui est accessible, elle est hébergée sur la plateforme de Streamlitet en gros ici vous avez un petit bouton, vous pouvez dire qu'est-ce que je veux faire,est-ce que vous voulez faire une fusion de PDF ou alors faire de l'extraction de texte
00:14:04 :avec de l'OCR.Donc vous voyez ici en fonction de ce que vous mettez, je vous montrerai après l'applicationsi vous voulez le code.Donc là ici vous voyez qu'on a un bouton qui permet d'uploader un fichier, c'est pareilavec Streamlit on peut faire ça comme on veut.
00:14:21 :Et en gros, je peux dire, voilà donc ça c'est un fichier PDF que j'envoie, et qu'est-ceque je veux faire, en fait moi je veux par exemple extraire tout le texte.
00:14:40 :Je dis ok, et donc là si je fais extraire, donc là il charge, machin, et quand il auraterminé d'extraire tout le texte, il dit extraction terminée, donc là je peux télécharger,et là en fait ça me télécharge un fichier texte avec l'extraction, il faut que je sorted'ici, ouais, ici, avec en fait l'extraction en texte du fichier PDF.
00:15:02 :Bon je ne vais pas vous montrer le fichier, si je peux vous le montrer, il n'est pas secret.En fait vous voyez, il a été chercher ce fichier PDF là, et en fait l'applicationelle a été cherchée avec l'OCR, bon en fait là sur un fichier PDF il n'y avait peut-être
00:15:26 :pas besoin parce que le texte était facilement, on pouvait facilement l'extraire, mais engros, voilà il y a plein de textes et moi j'ai juste été chercher le texte avec lefichier PDF.
00:15:36 :Donc ça c'était un exemple d'application, et si par exemple on avait voulu, je ne saispas, juste aller chercher un nom, on va dire, information, en fait l'application elle vouspermet, au lieu d'écrire tout le texte, vous pouvez trouver des occurrences de mots, vouspouvez dire combien de fois j'ai le mot information, donc là il va chercher, et il va dire, voilà,
00:16:05 :sur la page 1 il y a 0 fois le mot information, sur la page 2 il y a 3 fois, sur la page 3il l'a trouvé 4 fois, etc.
00:16:12 :Donc ça j'avais, c'était juste un client qui avait besoin de compter le nombre d'occurrencesd'un mot dans chacune des pages, donc c'était juste ça, et en gros moi j'ai fait le choixde dire, je vais développer cette application là comme ça, lui il peut y accéder en lignedirectement, et je n'ai pas à installer sur sa machine l'application, je n'ai pas à prendre
00:16:33 :la main sur sa machine, parce que ça c'est des choses que je n'aime pas trop faire, vousvoyez les données personnelles des gens, etc. donc c'est un peu compliqué.
00:16:42 :Si vous voulez voir, on peut aller voir le code de cette application là, donc pareilje vais aller sur mon github, celle là vous pouvez la voir, elle n'est pas privée.
00:17:15 :Donc en gros, ce qui est intéressant, enfin si je peux vous montrer un petit peu le code,si ça vous intéresse, mais ce n'est pas le but ici, le but ici c'est de vous montrerque dans le code, j'utilise Paitesseract, qui en fait c'est la librairie Python quipermet de faire la reconnaissance de caractère, par exemple quand vous avez une écriture
00:17:52 :avec un E et un A, et que Python identifie que c'est un E ou un A, et en fait c'est cettelibrairie là qui le fait, mais en fait ça c'est juste une librairie, c'est comme sic'était une API, c'est à dire elle va interfacer avec le logiciel Paitesseract qui
00:18:07 :lui est installé sur la machine, et en fait ça, si vous ne l'installez pas sur la machine,la librairie ne marchera pas, parce que la librairie c'est juste Python, c'est l'interfaceentre Python et le logiciel, mais le logiciel il faut l'installer, et donc c'est par exempletypiquement ce logiciel là que je n'avais pas envie d'installer sur la machine du client.
00:18:26 :Donc en gros vous voyez que dans Streamlit, il suffit juste de mettre les requirements,donc ça c'est vraiment Streamlit, lui il va prendre en main le requirements.txt, il
00:18:38 :va installer tous les packages qu'il faut, tous les packages de la librairie Python,et ici j'ai juste mis un fichier texte txt qui s'appelle package.txt, donc ça c'est
00:18:48 :un format particulier à Streamlit qui comprend que ça c'est des logiciels qu'il doit installeren interne sur la plateforme, et j'ai juste mis Tesseract OCR et Popler.util, donc ça
00:19:00 :c'était pour la manipulation des fichiers PDF.Donc vous avez juste un fichier à mettre, lui quand vous allez lui mettre sur sa plateforme,Streamlit va comprendre qu'il doit installer ces logiciels là sur la plateforme, sur leserveur que vous êtes actuellement en train d'utiliser.
00:19:19 :Donc je trouve que c'est quand même intéressant et on se fait beaucoup moins chier à devoircréer un exécutable, le transférer, le donner à la personne chez qui on veut l'installer.
00:19:31 :Donc voilà, pensez à cette option là de développer des applications web, surtoutdans l'ère actuelle, tout passe par internet maintenant, et non Streamlit franchement c'estpas ce qu'on a fait là.
00:19:54 :Imagine par exemple que tu dis je veux faire une calculette en Streamlit, en fait moi tousles interfaces graphiques je les fais en Streamlit, tu vois c'est assez simple, imagine tu faisjuste premier nombre égale st point, du coup c'est un, on peut mettre un entier, numberinput, ok, et en fait il suffit de mettre à chaque fois, donc st c'est pour Streamlit,
00:20:37 :c'est ce que j'ai importé, je lui dis c'est un nombre, et là à chaque fois tu lui metsle label, donc tu lui dis entrez votre premier nombre, ensuite tu dis second nombre égalst point, c'est toujours un number input, entrez le second nombre, voilà, et tu disif premier nombre, second nombre, parce qu'en fait comme c'est un label, comme tu définis
00:21:12 :ton nombre comme étant l'input de ça, tant qu'il est pas défini, si après ici j'aidit st point markdown, donc markdown pour dire c'est ce que tu veux écrire, si tu disle résultat de, c'est le print à Streamlit en fait, de quoi? Markdown c'est le print
00:21:38 :à Streamlit? Ouais quasiment ouais, après t'as plein de choses mais tu peux avoir txtou ce que tu veux, mais en gros oui c'est un peu ça. Et second nombre, égal, et là
00:21:56 :on met premier plus second nombre, ok, maintenant si je retourne voir mon application, où est-ceque j'étais? Donc là tu vois il m'a fait une petite interface assez sympa, et donc
00:22:44 :là, ici je lui dis bon bah voilà je mets mon nombre, je mets ce que je veux, donc jepeux mettre deux, et ici je mets cinq, ok, et tu vois il me dit bah le résultat c'estdeux machins. Après on peut aller un petit peu plus loin, on peut dire en fait ici moi
00:23:00 :je lui ai mis, c'est juste pour vous montrer à quel point c'est simple de mettre en placeles choses, là on a fait une addition mais on aurait pu dire bah en fait on aurait bienaimé qu'il nous propose une liste d'opérations possibles. Donc en fait pour ça il suffit
00:23:14 :de mettre une liste de choix possibles, une liste déroulante comme on ferait en Djangoen pur HTML, mais ici il y a des choses qui existent, donc on peut dire choice égal,donc là on va définir les choix possibles, donc on veut addition, on veut soustractionet multiplication par exemple, et là on n'a qu'à dire opération choice égal st.cdu
00:23:48 :select box, et donc là on va dire choisissez votre opération, et là on lui met la listedes opérations possibles. Et donc maintenant on va dire il faut qu'il y ait le premier
00:24:13 :nombre de dispo et que l'opération choice aussi soit sélectionnée, et on va dire siopération choice égal, bah si c'est un plus, en fait le résultat ça va être premiernombre plus second nombre, si l'opération choisis c'est une soustraction, on fait pareil,on va mettre un moins, et ici si l'opération c'est un fois, on met un fois, et ici on va
00:25:00 :mettre, là du coup ça va être opération choice, et ici on va mettre directement lerésultat. Je vais voir mon application maintenant à quoi elle ressemble, tu vois ici je peux
00:25:27 :enseigner, donc là je mets 78 et puis là je mets 90, là par défaut il me met le premier,tu vois je pourrais même, parce qu'en fait si je regarde, par défaut il me met le plus,mais moi je peux lui dire en fait tu mets, si je lui dis ça qu'il va aimer, il met rien,
00:25:48 :comme ça en fait il ne fait pas, ouais non il n'aime pas ça, on va rajouter ici, jevais rajouter, pourquoi il dit ça, il faut que je lui mette, donc là tu vois il ne faitpas, et puis ici en fait il t'a même implémenté automatiquement un petit truc pour implémenter,
00:26:41 :donc c'est sympa, et ici donc tu choisis maintenant, tu mets moins, le résultat demachin est moins, si en fait j'avais mis plus, il me change, tu vois, un peu comme je veux.
00:26:52 :Donc oui c'est ça, moi je trouve que c'est un super moyen pour partager ses applicationset en fait aussi ce qui est super c'est que tu vois, attends je vais relancer ici, Christiant'as pas loupé grand chose, on a commencé à discuter un peu, est-ce qu'on peut utiliserStreamlit, donc c'est un framework pour mettre en place des applications web et les distribuer
00:27:28 :facilement, donc là on est en train un peu de regarder comment on fait ça, et donc làce que je vous disais c'est que imaginez que vous, regarde si je lance Streamlit, en faitil va me dire les adresses IP sur lesquelles est lancée l'application, donc là tu vois
00:27:51 :j'ai mon localhost, mais ce qui est bien aussi c'est qu'il fait un espèce de, ças'appelle un broadcast, où en fait il balance l'application sur tout le réseau local quiexiste, donc là tu vois il me dit 192.168.1.48, donc ça c'est une adresse IP qui est accessible
00:28:10 :de partout, les gens qui sont sur le réseau local, après forcément pour l'instant c'estpas sur internet, mais tous les gens qui sont sur ton réseau local, imagine je sais passi t'as des enfants qui sont dans leur chambre et qui ont leur propre PC avec une adresseIP différente, s'ils atteignent cette adresse IP là, même si ça tombe pas sur leur machine
00:28:29 :à eux, ce sera accessible. Et donc ça c'est super puissant quand tu travailles dans uneentreprise et que tu veux partager ton application. Ouais, ouais je suis d'accord c'est trop
00:28:43 :cool, et maintenant imagine que on veuille, déjà dites moi si ça vous intéresse queje continue à parler de ça, de Streamlit parce que je m'avais déjà parlé, mais siça vous intéresse je peux vous montrer rapidement comment on pourrait la mettre en place surun VPS, donc un truc, une plateforme en ligne sur un serveur, sinon je passe à autre chose.
00:29:07 :Ok, donc je vais vous présenter Linode, Linode c'est le fournisseur que j'utilise pour lesVPS, je sais que Thibault il utilise DigitalOcean par exemple, mais en gros c'est à peu prèsla même chose, je vais vous montrer à quoi ça ressemble. Je vais dégager des trucs.
00:29:28 :Ah pardon j'avais un bruit bizarre chez moi. Ok donc ça je vire, après j'ai trop de trucs.Ok donc là on est bien, on va aller sur Linode, ok, que vous voyez assez. Ok donc là en fait
00:30:01 :Linode c'est un fournisseur de services, il y a plein de choses, vous pouvez avoir pleind'instances, donc en fait imaginez que vous voulez créer une nouvelle instance, donc vousdites en fait je veux un nouvel espace, il y a plein de distributions Linux qui existent,vous dites je veux Kali Linux, je veux Ubuntu, quoi que ce soit, enfin bref on s'en fout,
00:30:33 :moi c'est une instance Ubuntu, et vous verrez qu'en fait quand vous créez, je ne vais pasle refaire ici, vous pouvez créer tout ce que vous voulez, donc nous ce qu'on créec'est une instance Linode, et moi j'ai pris celui que j'ai là, ça s'appelle Nanode,c'est juste, est-ce qu'on peut voir les propriétés, donc j'ai Ubuntu dessus, j'ai 512 en swap,
00:31:03 :et puis elle fait 1 giga de RAM avec un seul coeur, mais en fait sur le cloud computingvous pouvez avoir des machines qui font 36 coeurs avec je ne sais pas combien de RAM,mais bon forcément ça a un coût. Là ici pour info si ça vous intéresse, c'est une
00:31:22 :machine qui coûte 5 euros par mois, quoi que vous fassiez dessus, et vous avez icivos accès avec l'adresse IP de la machine etc. Donc là moi j'ai déjà configuré avec
00:31:32 :une clé SSH, je ne sais pas si ça vous parle, clé SSH dites moi si c'est obscur pour vousou pas. Une clé SSH c'est un truc qui est beaucoup plus fort qu'un mot de passe, c'est
00:31:47 :une espèce de clé cryptée, et en fait, vous voyez assez bien là. Je vais peut-êtrevous expliquer. Ah oui sur un Raspberry Pi on peut accéder sur le Raspberry Pi en SSH,
00:32:24 :ça marche bien. Donc en gros, moi ce que je fais pour accéder à ma machine, j'utilise… Ok, donc en fait là j'ai pas besoin de rentrer le mot de passe parce que j'aiconfiguré une clé SSH. Je ne vais pas rentrer dans le détail là, ça ne sert à rien,
00:32:44 :mais en gros, la machine elle connaît ma clé SSH publique, et moi avec ma clé privéeet ma clé SSH publique je peux m'y connecter. Donc en gros là je suis sur ma machine,
00:32:57 :je vais supprimer ça. En gros là je suis sur ma machine qui est en ligne, donc vousvoyez pour l'instant je n'ai rien dessus, parce qu'en fait je mets jamais rien dessus,j'ai juste quand j'ai besoin de faire tourner une application, je fais un pool avec monGitHub et comme ça je n'ai rien qui est dessus tant que je ne m'en sers pas. Donc
00:33:24 :là ce qu'on va faire, on va se dire qu'on va prendre le script qu'on a fait là, voussavez la petite application qui va bien, donc copy, paste, ok, je vais me faire une nouvelleet je vais l'envoyer via le SSH, je vais envoyer mon script via le SSH sur ma machine
00:33:47 :Linode ici. Donc en fait pour ça ce qu'on peut faire c'est une commande qui s'appellescp, c'est pour copier un fichier en ligne de commande en utilisant la connexion SSH,donc je vais dire scp, ou sinon même carrément je peux faire scp, donc là c'est le sourcefile et je vais le copier sur, on va le copier, j'espère que ça va marcher ça, 139.144.143.48,
00:34:41 :donc ça c'est l'adresse IP, je vais lui dire, je le veux sur home, ok ça a l'air d'avoirmarché, donc maintenant si je retourne ici sur mon Linode et que je fais un ls, vousvoyez ici j'ai bien, je vais le bouger en fait, dans mon dossier home, j'ai bien le
00:35:14 :fichier que j'ai copié, si je fais un cat même.py pour afficher ce qu'il y a dedans,voilà j'ai bien ce que je veux, je suis content. Donc maintenant ce que je dois faire
00:35:24 :c'est que je dois recréer mon environnement virtuel parce que je dois faire tourner Streamlitsur l'instance du serveur, donc je fais un python m venf pour créer mon environnementvirtuel. Ok je vais l'activer, source.inactivate, j'installe Streamlit dessus, c'est des machines
00:35:58 :assez puissantes donc ça va assez vite. Ok donc là si je vais voir j'ai bien tout cequ'il me faut, et donc maintenant si je fais Streamlit run main.py, donc là vous voyez
00:36:26 :qu'en fait c'est une adresse IP publique donc maintenant si je vais dessus, ça vamarcher, donc j'ai bien mon application et si moi je vous envoie ici l'adresse IP, vouspouvez aller tester, normalement ça va fonctionner parce qu'en fait l'application elle est enligne et on peut aller interagir avec et s'amuser. Donc dites moi dans le chat si ça fonctionne
00:36:53 :bien. Ok, bon voilà je vous laisse y aller mais je vais la fermer, ça sert à rien,je ne vais pas le laisser là. Donc voilà un peu comment vous pouvez distribuer une
00:37:10 :application assez facilement. Bon là forcément ça utilise une instance Linode donc ça aun coût, mais bon 5 euros par mois si jamais vous travaillez je ne sais pas pour un clientou quoi que ce soit 5 euros c'est dans les frais, vous rentrez facilement dans vos fraisil n'y a pas de soucis. Ouais avec un compte Python Anywhere, non en fait Python Anywhere
00:37:35 :c'est pas tout à fait la même chose, c'est pas un VPS, c'est un quoi que. J'avais undoute, je pense que c'est un commercer comme hébergeur mais je ne sais pas si on peutfaire ça. Ouais on peut tester, je ne crois pas parce qu'en fait, je ne pense pas j'avais
00:38:05 :déjà regardé. Non en fait ça ne marche pas parce que c'est pas un serveur virtuelprivé, Python Anywhere eux ils te fournissent toute l'architecture pour par exemple lancerun Django ou un Flask ou un FastAPI ou des choses comme ça. Tu ne peux pas lancer un
00:38:35 :serveur, une application avec un serveur, exposer des ports de la machine etc. parcequ'en fait tu vois ici on expose le port 8501 de la machine, ça c'est pas des chosesque tu peux faire avec Python Anywhere. Ok donc là l'application elle ne devrait plus
00:38:52 :fonctionner parce que je l'ai supprimé et puis je vais supprimer aussi, je vais fairele ménage tout de suite. Ok donc ça c'était sympa, qu'est-ce que j'étais en train de
00:39:11 :dire? Ouais tu peux développer des applications Python, tu peux héberger des applicationsPython mais je ne suis pas sûr que tu puisses les faire tourner comme ça comme on l'a faitsur Streamlit. Qu'est-ce que j'étais en train de dire juste avant? Est-ce que quelqu'un
00:39:47 :se souvient de ce que j'étais en train de raconter? Non j'étais en train de direun truc spécifique ou alors c'était bon pour ça, pour l'inode. Je disais juste ouais
00:39:58 :il faut payer 5 euros par mois mais ça vaut le coup, vous avez une machine puissantesur le cloud. Est-ce que vous voulez voir d'autres choses avec Streamlit, faire de la
00:40:21 :data visualisation? Est-ce que ça vous intéresse ou est-ce que vous voulez voir autre chose? J'avais commencé à, ce qu'on peut faire c'est, ouais donc Gabriel qui est intéressé,
00:40:36 :les autres dites-moi ou est-ce que vous voulez voir autre chose? Bon après si ça ne vousintéresse pas il n'y a pas de souci. Donc imaginez que, ça je vais le dégager, on
00:41:00 :va faire une petite application Streamlit dans laquelle on va demander à l'utilisateurde charger un fichier, un datacsv et faire des analyses sur ce fichier là. Donc pour
00:41:11 :ça on va utiliser Pandas et Streamlit, donc là on est bon, et donc on va dire st.markdownbienvenue sur votre application de stats. Ok donc le fichier on va dire filename égale
00:41:37 :à st. ça c'est fileuploader c'est ce qui permet d'avoir un bouton dans lequel vousallez charger votre fichier. Donc upload votre fichier, ok, on a ça, ah oui j'ai découvert
00:41:54 :un truc il n'y a pas longtemps, un truc pas mal du tout, c'est, attendez laissez-moi regarderdans un des trucs que j'ai, c'est, on va prendre pivotable, ça c'est un truc de malade vousallez voir, pivotable.js, c'est une bibliothèque javascript mais on ne va pas se gêner pour
00:42:54 :le faire, je vais vous montrer après à quoi il sert. Voilà juste installer, donc là onva charger notre fichier, ok, et if, n'oubliez pas de faire ça à chaque fois, parce qu'enfait là si par exemple je dis df égale, donc ça c'est pour faire un dataframe, ouais
00:43:19 :faut, c'est marrant ça, df égale pd.readcsv, donc ça c'est pour lire votre fichier csv,pourquoi import panda as pd, ok, et donc déjà ce qu'on peut faire c'est st.dataframe, df,
00:43:41 :donc là ça devrait marcher, run, ok donc là je suis sur mon application, bienvenuesur votre application de stats, j'ai un bouton qui me demande d'uploader un fichier, doncje vais faire l'upload, où est-ce qu'il est mon fichier, on va faire sur espérancede vie, donc là en plus vous voyez que vous pouvez afficher votre dataframe avec cette
00:44:18 :petite commande là qui est assez simple, mais ce qui est super bien aussi, ce qu'onva faire, c'est d'en récupérer le code, on récupère un truc, ça c'est pour afficheret il faut, je vais m'en occuper de ça, ok, si je relance, ça va être bien, ok,et ce que vous pouvez faire aussi, parce qu'en fait quand vous uploadez votre fichier, ça
00:45:30 :peut être un peu chiant d'avoir ça, donc vous pouvez ici mettre des expander, doncc'est un peu comme dans Django, si vous mettez un bouton drop down, vous savez, un truc quiva afficher ou non afficher, donc vous pouvez faire ici, à cet endroit là, vous diteswith st.expander, en fait vous ne mettez que en expander votre dataframe, vous allez comprendre,
00:46:03 :afficher le dataframe, donc si je retourne, vous voyez ici en fait, quand j'ai chargémon dataframe, je peux dire ou non j'affiche mon dataframe, et donc là ce que je vousdis, le truc énorme, c'est cette commande là, que je vous ai montré, c'est la bibliothèquepivottable.js, c'est pour faire dans Excel un tableau croisé dynamique, je ne sais
00:46:30 :pas si vous en avez déjà utilisé, en fait cette petite commande là, pivot UIDF, çavous crée un tableau croisé dynamique interactif. Et donc vous allez voir, ici en fait, il a
00:46:44 :décidé de prendre automatiquement toutes les entrées que j'avais dans mon dataframe,donc toutes les colonnes, et ce que vous pouvez dire, c'est que vous dites par exemple, j'aimeraisbien afficher ici les pays, donc là vous voyez il m'a affiché tous les pays, et enplus, bon après désolé pour l'affichage, c'est pas terrible, je vais filtrer, je ne
00:47:02 :vais pas tout mettre, comme ça on verra bien, on va juste select none et on va afficherl'Albanie, l'Arménie, voilà donc là en fait j'ai les entrées dans les pays, etce que je peux dire, c'est qu'en fait je mets ici en colonne l'espérance de vie.
00:47:25 :Donc je peux mettre plein de choses, et ici, c'est parce que, faudrait que je le mettefull, je peux changer ici, parce qu'en fait, je ne sais pas si vous voyez, mais il ne prendpas toute la largeur, donc là je peux lui demander, streamlit, full width, ici, voilà,
00:48:13 :là maintenant il prend toute la place, et donc vous voyez en fait, ce que je peux mettreici, je peux mettre tout ce que je veux, je peux déplacer mes trucs, je peux dire,si tu mets l'alcool en plus, tu mets la population, et en fait lui il me fait des tableaux croisés
00:48:29 :dynamiques de toutes les valeurs, et en gros c'est vachement pratique, parce qu'en faitvous avez juste à prendre votre dataframe, vous le mettez, et lui il s'occupe de tout,moi je n'ai rien fait, j'ai juste appris à jouer avec ce que je veux, et par exempleje veux mettre ici l'année et l'espérance de vie, donc là je veux dire, moi je veux,
00:48:56 :et ici qu'est-ce que je veux, moi je veux juste, et ici en fait vous lui définissezce que vous voulez, donc là moi je fais juste un comptage, mais si par exemple je voulaisla valeur moyenne, je peux lui dire ici, bah quelle est la valeur moyenne par année,
00:49:12 :donc en 2000, la moyenne d'âge, l'espérance de vie, c'était, voilà, il y avait, attendezqu'est-ce que c'est ça exactement, espérance de vie, enfin bref vous avez compris le principe,c'est un tableau croisé dynamique interactif, donc ça je trouve que c'est vachement intéressant,et ce qui est bien avec Streamlit, c'est que en fait, ça c'est pas propre à Streamlit,
00:49:33 :c'est juste une table, un tableau croisé dynamique fait avec la bibliothèque JavaScript,et vous pouvez inclure directement ça dans, parce qu'en fait c'est du HTML, et vous pouvezl'inclure directement dans Streamlit, parce qu'en fait Streamlit c'est un langage web,donc vous pouvez utiliser du langage web. Donc là on est content, et puis on va le
00:49:55 :mettre pareil en expander, with st.expander, afficher pivot, ok donc là j'ai mon pivotmachin, et on pourrait se dire, j'aimerais bien, on veut faire des graphes, donc onpeut importer Plotly, pareil il n'existe pas, donc je vais l'installer, pip installPlotly, ok, c'est pas grave si vous ne connaissez pas les commandes que je fais ou que vous
00:50:47 :ne voyez pas, mais au moins vous savez qu'on peut le faire comme d'habitude. Donc làon va dire, on va créer un diagramme camembert vous savez, avec les datas, donc qu'est-cequ'on a comme data qu'on peut utiliser, si je relance Streamlit, ok donc il faut queje recharge mon fichier, et ce qui est bien c'est que quel que soit le fichier, donc là
00:51:16 :vous voyez là j'ai chargé un autre fichier, ah il faut peut-être que je lui dise quandmême que le séparateur c'est un point virgule, ah le séparateur je pourrais le mettre enliste de choix, bon là je le fais comme ça à l'arrache, ok donc là j'ai ça, comptable
00:51:40 :machin, donc ce qu'on peut faire c'est en dire on aimerait bien avoir une répartitiondans toutes mes datas de combien j'ai de comptables, ouais là je vous ai pas dit le data frame,c'est en fait on a des noms, je vais mettre aussi index call, on peut vouloir un diagramme
00:52:11 :camembert, on peut mettre la proportion sur un diagramme camembert directement du job,pour avoir le pourcentage de personnes qui sont en compta, en RH et en direction. Donc
00:52:20 :pour ça c'est assez simple, on va faire un pie chart, pie en anglais c'est tarte, doncen fait on va faire comme un graph en camembert, donc c'est un graph comme une tarte, doncon va dire pie chart égal tx.pie, donc là il suffit juste de lui rentrer le nombre du
00:52:40 :job, et ici en names ce qu'on veut c'est job, vous voyez c'était ici la colonne qu'il yavait là, donc je mets job, et après, donc là on crée le pie chart et après là onmet dans streamlit, donc streamlit.plotly tarte, et là je dis pie chart, je peux même lui
00:53:00 :mettre, si on va lui mettre un title quand même, répartition, job, si je ferme, jererun, et donc là vous voyez, il me sort un, et en plus il y a un diagramme interactif,ici si je vais dans, vous voyez quand je passe ma souris, il me dit bah là il y a 24% des
00:53:31 :gens qui sont en RH, 24,5% qui sont en compta, et ici il me met la petite échelle qui vabien, donc c'est assez sympa, et qu'est ce que je pourrais vous montrer d'autre, il ya des choses qui sont cool avec, mais ça c'est propre à plotly, on peut, vous savez
00:54:01 :des fois quand vous avez un diagramme camembert, vous avez des trucs qui se détachent un peugenre, genre comme ça, donc vous voyez avec, vous pouvez faire ce genre de graph, il suffitjuste de lui dire quelle valeur vous voulez détacher, et il peut le faire. Donc on a
00:54:27 :ça, et je peux vous remontrer un autre truc aussi sur streamlit, c'est un peu pour vousmontrer les possibilités que ça a, et en fait quand vous faites un peu du développementweb et que vous tapez les html et les css à la main et que vous rencontrez ce genre
00:54:39 :de framework, vous êtes, c'est le bonheur quoi. On pourrait dire en fait là j'ai faitun diagramme camembert mais je voudrais avoir un histogramme, donc je pourrais dire que jeveux mon histogramme, histogramme chart égal px point histogramme df, et là pareil je luimets mon histogramme avec les jobs, et pareil le title c'est répartition des jobs. Ce que
00:55:10 :je pourrais faire naïvement c'est faire un stplotly chart et là pareil je lui mets monhistogramme, donc là si je relance, donc là j'ai mon truc en mode camembert mais je l'aiaussi en histogramme, et si je voulais par exemple avoir un petit onglet où en fait j'aijuste à cliquer sur un des deux et j'ai un des deux, donc c'est ce qu'on appelle des
00:55:33 :tabs, et vous voyez que c'est hyper simple, il suffit juste de dire, de définir des tabs,tab 1, tab 2, égal st point tabs, et donc là il faut lui donner une liste, donc làvous dites c'est le pie chart, et là c'est histogramme, et après en fait ça marche beaucoup
00:55:53 :par context manager avec plotly, donc là vous dites with tab 1 vous voulez afficherle pie chart, et quand vous êtes sur le tab 2 vous voulez afficher l'histogramme. Donc
00:56:10 :là si je relance, vous voyez maintenant en fait j'ai ici un onglet où en fait je peuxcliquer, et je pourrais en mettre autant que je veux, mais voilà, c'est juste pour vousdire que si vous faites du développement web et que vous avez déjà essayé de faireça à la main, avec du html et du css, bah franchement c'est la merde quoi. Après il
00:56:31 :y en a qui s'en sortent très bien en html et css, mais moi c'est pas du tout mon truc,moi je fais du backend, je fais de la data, et du coup ce genre de truc c'est génialpour présenter facilement vos données, vous voyez là j'ai quoi, j'ai 4, 5, en 5 lignes
00:56:49 :de code on a fait un petit tableau avec des tables et puis on peut faire ce qu'on veutdessus. Qu'est-ce qu'on pourrait vouloir afficher aussi? Voilà, après on peut,
00:57:18 :Screamlit, et puis ça je pourrais en parler des heures, mais il y a plein de trucs, Plotlypouvait faire plein de choses, pouvait faire des graphes super stylés, interactifs, enfait ce qui est pas mal c'est que vous voyez ici j'ai une fenêtre qui est interactive,donc là si par exemple je veux juste zoomer sur ça, bah je peux, et puis en plus quand
00:57:36 :je passe ma souris, vous voyez j'ai ce qu'on appelle un hover, c'est le petit machin quevous voyez apparaître quand on passe la souris, ça c'est hyper galère aussi à développeren pure HTML, CSS, bah là il me le fait tout seul en fonction de la donnée que je lui
00:57:50 :ai mis, et voilà, donc là vous revenez, vous pouvez zoomer, vous pouvez faire un lassocomme ça, il sélectionne que ça, voilà il y a vraiment plein de trucs, j'aurai pasassez de 10 heures de session pour vous présenter tout ce que Screamlit et Plotly peuvent faire.
00:58:12 :Et voilà il y a vraiment plein de choses, on peut ajouter des boutons, si par exempleje dis with st un bouton, dis moi bonjour, et bah là vous dites st.partdown, voilà,
00:58:47 :et puis il va me mettre un bouton, c'est avec un if, et je clique sur le bouton, hop,il me dit bonjour ma gueule, voilà, et là on peut imaginer par exemple, vous mettezje vais dire, sort moi les statistiques, sort moi les stats, et en fait vous allez faire
00:59:17 :apparaître st.dataframe, et là vous allez mettre un describe, donc là si je relance,sort moi les stats, et là hop il me sort, describe c'est une fonction de panda qui vafaire des statistiques sur chacune des données, et donc là je lui ai dit si j'appuie surle bouton tu me sors le describe, donc là j'ai appuyé sur le bouton et il m'a sorti
00:59:46 :des statistiques sur les salaires, donc il y a 367 lignes, la valeur moyenne c'est 2543,la valeur médiane c'est 2474, voilà, il y a vraiment plein de, vous pouvez faire pleinde choses, encore une fois je pourrais pas tout vous montrer, mais allez voir la docde Streamlit, allez voir la doc de Plotly, il y a plein de choses à faire, et voilà,
01:00:16 :vous pouvez déployer, en fait c'est surtout orienté data quand même Streamlit, c'estpour les applications data, donc vous voyez on peut faire des beaux dashboards et deschoses comme ça, c'est surtout pour ça que c'est fait, mais comme vous l'avez vu toutà l'heure avec l'application que je vous ai montré avec les PDF, ça peut aussi faire
01:00:32 :d'autres choses. Oui Gabriel? Du coup, si jamais, parce qu'avec Jean-Gauche du coupj'ai pas trop le temps d'y mettre, mais pour le boulot ça pourrait m'être utile ça tuvois, et si jamais tu veux te former pour des besoins spécifiques comme ça sur desfichiers CSV analysés, parce que moi j'en ai beaucoup, pour te former là dessus en
01:00:53 :fait c'est pas très long Streamlit. Non, non en fait c'est même pas… J'ai pas trople temps avec Django mais juste pour ça tu vois, ça t'a l'air ouais. Bah regarde ce
01:01:02 :qu'on a fait. C'est un truc de ouf, ce que t'as fait en peu de lignes. Bah voilà c'estça, et en fait tu vois en si peu de lignes là, t'as un serveur web qui est distribuésur tout un réseau local, t'as des graphes interactifs avec lesquels tu peux interagir,
01:01:19 :t'as des boutons, t'as plein de trucs, et en fait Streamlit c'est un framework Python,donc tout le langage qu'il y a là, normalement tu le comprends si tu comprends du Python.
01:01:27 :Tu vois ici j'ai juste fait une liste, enfin bref j'ai pas fait grand chose, et Streamlitvraiment c'est pour ça que c'est hyper puissant, mais j'ai montré un dixième de ce qu'onpeut faire avec Streamlit, il y a tellement d'autres choses. Tu vois par exemple ici
01:01:47 :j'ai chargé le fichier, mais si j'avais fait une fonction def load file, je vais mettrelà et je vais mettre retourne mode, en fait ici t'as des décorateurs de Streamlit, etlà c'est st.cache, et en fait ça veut dire que tous les inputs que va avoir la fonction
01:02:09 :il va les mettre dans ton cache de navigateur, et du coup tu vois t'auras pas besoin à chaquefois de recharger le fichier, il sera toujours là dans le cache, tant que les cookies sontpas expirés. C'est juste un exemple pour te dire qu'il y a vraiment plein d'options
01:02:28 :possibles, et la communauté Streamlit est très active, ils développent tous les mois,ils font des updates avec des nouvelles choses. Donc pour un développeur backend c'est le
01:02:48 :meilleur outil je pense pour déployer vos applis. Et donc c'est surtout orienté data,donc typiquement analyse de fichiers CSV, fichiers Excel, bref tout ça, et quand vousimaginez que vous pouvez avec un simple input, vous pouvez renseigner un URL, vous pouvezaller interroger une API qui va aller chercher des datas dans une base de données, donc
01:03:17 :après vous pouvez faire du traitement de données en interrogeant directement des API,donc voilà les possibilités sont illimitées. Quand tu essayes de lancer quoi? J'ai juste
01:03:41 :fait un markdown de bienvenue pour voir Streamlit, il te met le module name, c'est installé? Oui, Streamlit est installé. Juste tu as fait cette ligne là, c'était pour un
01:03:58 :markdown? Oui, c'est ça, juste cette ligne là, toute seule avec l'import de Streamlità Zesté. Tu as fait ça dans un environnement virtuel ou c'est un truc comme ça au global?
01:04:16 :Oui, c'est un environnement virtuel. Et quand tu fais pip list, tu as bien Streamlit? Oui.Essaye d'installer IPython parce qu'a priori… Et c'est quoi IPython? IPython c'est ça,
01:04:36 :tu vois ici là, en fait si je fais pip, tout simplement, vous connaissez, c'est un videde commande, c'est un interpréteur Python, tu vois ici il y a une porte, une range 10,1, 2, 3, 4, 5, 6, 7, 8, ça tu connais Gabriel? Oui, oui. Donc ça c'est l'interpréteur
01:05:02 :Python, mais c'est un peu chiant, alors que si je fais IPython, et en plus l'interpréteurPython, tu vois, j'ai aucun… en l'occurrence si, mais en fait tu vois par exemple si jefais for i in range 10, il ne me met pas l'indentation et tout, je suis obligé de la refaire, c'est
01:05:20 :hyper chiant, alors que si j'utilise IPython, c'est un peu comme les Jupyter Notebooks,ça marche par cellules, donc là maintenant si je fais une porte OS, tu vois en plus j'aiune coloration syntaxique dans le terminal, et je peux faire for i in range 10, et làtu vois il me fait l'indentation dans le terminal, donc en gros c'est un interpréteur un petit
01:05:46 :peu ping-pé, tu vois c'est beaucoup plus clair, tu vois ça marche par cellules, làsur la cellule 1 j'avais fait un import OS, voilà c'est juste un interpréteur beaucoupplus simple, mais c'est bizarre que ce soit ça le problème pour Streamlit. Essaye mais
01:06:04 :je ne crois pas que ce soit ça. C'est fait ça, je viens d'installer, c'est bon ça fonctionne,c'est pas un problème. Bon ben voilà, écoute, plus que de trouver le temps à utiliser
01:06:15 :Streamlit mais… Eh ouais! Bon ben voilà messieurs dames c'était tout pour moi cesoir, je ne sais pas si vous avez des questions? Merci Pauline, je suis un peu parti en freestyle
01:06:34 :j'ai l'impression, mais dites moi si ça vous a intéressé quand même, ou si vouspréférez quand c'est quand même plus structuré. Ouais désolé Salvatore, en plus j'avais
01:06:55 :prévu aujourd'hui le labyrinthe avec l'implémentation avec des classes etc, c'était eux qui avaienttout préparé, et je suis parti en freestyle sur Streamlit, je suis désolé. Désolé,
01:07:14 :vraiment désolé. Et tu vas voir, on verra ça la prochaine fois encore, j'ai dit dernièrefois, on va utiliser le BFS, c'est un algorithme de recherche de chemin, donc BFS c'est pourla recherche en profondeur. La prochaine fois c'est la bonne. Et j'ai vu une question,
01:07:43 :PyQt5, faudrait demander à Thibaut pour ça, parce que les interfaces graphiques avec PyQtc'est vraiment pas… J'y connais pas grand chose pour être honnête, donc ça faudraitvoir plutôt dans un mentorat un peu plus avancé avec Thibaut. J'espère que ça vous
01:08:12 :surprend pas quand je vous dis je sais pas, je connais pas, parce que quand vous faitesdu développement vous avez un peu vos spécialités, vous pouvez pas tout connaître, après Thibautil fait purement de l'enseignement, donc forcément il connait beaucoup différentssujets, mais voilà, soyez pas surpris quand je vous dis je connais pas, même si je suis
01:08:36 :mentor, il y a des choses que je connais pas, et voilà quoi. Moi j'ai pas de complexeà dire que je connais pas quelque chose, je préfère dire que je connais pas plutôtde la merde et vous induire en erreur. Donc désolé PyQt5 ce sera pas avec moi si il
01:08:57 :y en a, en tout cas pour l'instant, peut-être un jour. Moi j'ai jamais vraiment apprisPyQt5, et maintenant que je connais le cloud computing etc je me vois pas investir du tempslà dedans, parce que pour moi ça me servira pas après développer des applications graphiques,ça sert, mais en tout cas pour moi ce que je fais j'y vois pas trop d'intérêt pour
Aucune occurrence trouvée pour « ».