Ajouter un programme python fonctionnel à de l'HTML

Résolu
Bonjour, j'aimerais savoir comment mettre un programme python dans une page html. Il faudrait que sur la page WEB, on puisse exécuter le programme mis dans cette page.
Merci à tous ceux qui me répondront
Bonne journée à vous

32 réponses

Résumé de la discussion

Mettre un programme Python dans une page HTML et le faire s'exécuter directement depuis cette page repose sur une limitation : le navigateur interprète HTML et JavaScript, pas Python. Des réponses évoquent une voie avec JavaScript et ActiveX pour lancer cmd /c 'python ...', mais cette approche est Windows-only et expose à des risques de sécurité. D'autres insistent sur les défis des chemins et des noms de fichiers, et indiquent que l'exécution Python dans le navigateur n'est pas fiable en dehors d'IE ou sans serveur. En pratique, ces solutions restent limitées, et une approche robuste consiste à exécuter Python côté serveur et à communiquer via HTTP, plutôt que d'essayer une exécution locale directement dans la page.

Bobot (l’IA à votre service)
  1. Ah enfin !!! (et grâce au concours de plusieurs intervenants)

    normal car il y a le /k pour voir les erreurs !
    remet le /c et la fenêtre se fermera ...

    Ce code est une fonction en langage Javascript (attention, rien à voir avec Java !)

    Le Javascript est le moyen qui permet d'exécuter des actions dans une page web, puisque le langage html n'est qu'un langage d'affichage, un langage de présentation

    Cette fonction déclare une variable w et la défini comme un contrôle ActiveX (c'est ça qui fait peur à Windows quand on clique sur le lien: il peut y avoir des contrôles ActiveX malveillants, mais toi, tu reste en local, donc ça va)

    Ensuite, en appliquant la méthode run à ce contrôle, on exécute une commande de l'interpréteur de commandes Windows et donc on fait exactement ce que tu fais à la main en entrant la commande
    python C:\fresque\......
    dans la fenêtre de l'invite de commandes

    En fait, on peut exécuter des commandes de l'invite de commandes comme cls (efface l'écran),
    dir (liste les répertoires et fichiers), etc.. dans pratiquement tous les langages:

    En Python, on écrit:
    import os
    os.system('cls')

    En langage C, on écrit:
    system("cls");

    En langage TCL, on écrit:
    exec "cls"

    Conclusions:

    1_ toujours mettre les chemins des fichiers utilisés par un script Python, même s'ils sont
    dans le même répertoire que le script

    2_ effectivement (merci yg_be) cmd /k lance la commande en laissant l'invite de commandes ouverte, ce qui laisse le temps de lire les erreurs éventuelles

    3_ Concernant les dossiers de travail et les fichiers:

    Moi, à ta place, je laisserais tomber les dossiers de Windows du style C:\Utilisateurs
    C:\Utilisateurs\bline\Bureau\, etc ...
    Ces dossiers sont utilisés par Windows pour gérer les profils, stocker les raccourcis du bureau, des fichiers utiles au système, des images, des vidéos, etc ...

    D'ailleurs, non seulement Utilisateurs s'appelle users mais Bureau s'appelle desktop:
    C:\Users\33766\Desktop
    C'est ça le piège !

    Personnellement, que ce soit sur mon ordi perso ou professionnel, je fait dès le départ un dossier à moi:
    C:\Phil et je travaille uniquement là-dedans:
    C:\Phil\Dev\Python, C:\Phil\Photos, C:\Phil\videos, C:\Phil\suivi, etc ...

    (Sur nos ordi professionnels, on a carrément partitionné le disque C:\ : on a créé une partition D:\ et tout est dedans : D:\data\clients\, D:\sources\ ....)

    Et enfin, bien que Windows le permette désormais, je garde le réflexe de ne pas utiliser
    de caractères exotiques, points, espaces, etc... dans les noms de dossiers ou de fichiers:
    C:\toto\le dossier\le réchauffement.clim.py ---> C:\toto\le_dossier\le_rechauffement_clim.py

    Et avec tout ça, je suis tranquille !
    1
    1. Bien vu j'avais zappé de le remettre /c
      Merci pour toutes ces explications, vous m'avez beaucoup aidés !
      Bonne journée à vous et mille merci !
      0
  2. en mettant les chemins des images dans le code Python, ca donne quoi ?

    images = {0:('C:\\Fresque\\Fresque_01.png',' .................
    0
    1. Cela fonctionne parfaitement !
      Il y a juste l'invite de commande qui ne se ferme pas après le clic mais je chipote

      Pouvez-vous m'expliquer juste cette partie du code html ?

      function run_python()
         {
          var w = new ActiveXObject("WScript.Shell"); 
          w.run('cmd /k "python C:\\fresque\\Le_rechauffement_climatique.py"'); 
         }
      


      Merci encore !
      0
  3. ah !

    essaie en mettant les chemins des images dans le fichier Python:

    images = {0:('C:\\Fresque\\Fresque_01.png', ……………....

    on va y arriver !
    1
    1. Halleluja ! Ca fonctionne ! Enfin
      Merci à tous pour votre aide !

      L'invite reste ouverte après le clique peut on faire en sorte qu'elle disparaît ? Sinon c'est pas grave je chipote
      Et juste une question, pouvez vous m'expliquer que fait ces lignes ?

      function run_python()
         {
          var w = new ActiveXObject("WScript.Shell"); 
          w.run('cmd /k "python C:\\fresque\\Le_rechauffement_climatique.py"'); 
         }
      

      Encore merci pour votre aide !
      0
    2. Contributeur
      @MrLemonPeux-tu dire en détail ce que tu as fait après la dernière suggestion de Phil_1857, qui a gagné la queue du Mickey comme on disait de mon temps (expression liée au manèges de la foire du Trône pour les plus jeunes, s'il en est).

      Notamment était-ce le libellé du chemin ou l'insertion d'un lien vers les images dans le fichier python?

      Cela servira à d'autres et prouve une fois de plus que la persévérance et l'entraide sont efficaces et agréables.
      0
    3. @georges97J'ai mis dans le fichier python le chemin des images ce qui évite les problèmes :)
      0
  4. ah zut, on ne s'en sort pas ... pourtant on n'est pas loin, dommage qu'on ne puisse lire

    il y a forcément une différence entre chez moi et chez toi …

    peux-tu faire une photo de l'explorateur avec ton répertoire Fresque

    et aussi copier ton html ici (avec les balises)
    0
    1. Quand je l'ai enregistré je l'ai nommée .html
      Les images sont dans le même dossier donc dans fresque
      Ca me donne ça quand je clique sur le lien
      :


      j'ai mis /k pour voir le problème
      0
      1. Contributeur
        le fichier python est donc bien exécuté, super!
        0
    2. sans extension ?

      appelle-le test.html tout simplement

      et les images ? elles sont dans fresque ?

      moi, j'ai aussi mis les chemins des images dans le code Python

      images = {0:('C:\\Phil\\Dev\\Python\\tests\\ccm\\Fresque_01.png',

      et un détail: à chaque fois que tu fais un test, ferme la page web et relance-la
      0
      1. Il s'appelle new 1 et est dans le dossier fresque
        0
        1. il s'appelle comment ton fichier html ?
          et il est dans quel dossier ?

          tu devrais aussi mettre les chemins des images dans le code Python, dans le dictionnaire images
          0
          1. et ca fait quoi ?

            on appuie sur le texte en bleu Fresque du climat sur la page web
            on répond oui au message
            et rien ne se passe ?

            pas de message ?
            0
            1. Comme avant, une fenêtre de l'invite de commande s'ouvre et se ferme aussitôt
              Pourtant je ne comprends pas ça fonctionne bien directement via l'invite pourquoi ça ne fonctionnerait pas là comme ça ?
              C'est peut-être du a la commande qui est pas bonne non ?
              0
            2. Contributeur
              @MrLemonen remplaçant /c par /k, tu verras le message d'erreur.
              0
            3. @yg_bepas de message d'erreur
              0
            4. Je sais peut être pourquoi, quand j'ouvre le script de l'html, ça me met l'ancien script alors que j'ai enregistré le nouveau
              0
            5. Bon bah non ça change rien ...
              0
          2. ok, mais tu n'as pas fait ce que je te demandais !!!

            "tu crée un dossier directement sous C: C:\bline, par exemple"

            et tu n'a pas mis les \\ au lieu de \

            w.run('cmd /c "python C:\\bline\\le_rechauffement_climatique.py" ');

            Recommence pour voir ...
            0
            1. ah pardon j'avais mal compris
              Du coup j'ai : C:\fresque\Le_rechauffement_climatique.py

              et dans le script html :



              Comme avant, en invite ça fonctionne mais pas sur internet explorer
              0

          3. 0
            1. J'ai mis dans "bline" toutes les images et le programme du coup ça donne ça :

              C:\Users\bline\Le_rechauffement_climatique.py

              Je test ça : python "C:\Users\bline\Le_rechauffement_climatique.py" dans l'invite de commande, ça fonctionne parfaitement

              Du coup je copie le même chemin dans la page html :


              Mais là ça ne fonctionne pas bizarre
              0
          4. Bonjour MrLemon,

            Peux-tu faire un simple test:

            tu crée un dossier directement sous C:

            C:\bline par exemple et tu y copie ton fichier : C:\bline\Le_rechauffement_climatique.py

            et tu fait le test avec ça et tu me dis ce que ca donne

            Je me méfie du dossier C:\utilisateurs, as tu remarqué que dans l'explorateur il s'appelle utilisateurs et que quand on clique dans la barre d'adresse en haut, il s'appelle C:\users ?
            0
            1. D'accord je test ça,
              Et oui j'avais vu que c'était en anglais c'est pour ça que ça ne fonctionnait pas, j'ai testé hier en anglais et dans la console ça fonctionnait mais pas via le lien de la page Html
              0
          5. Contributeur
            Bonsoir à tous,

            moi j'essaierais sans doubler les contre-oblique.


            J'y avais pensé mais n'ai pas osé interférer et à mon avis, c'est la bonne écriture. Par contre, j'ai aussi relevé que dans certains cas le fichier est nommé le_rechauffement_climatique et dans d'autre le rechauffement climatique, sans underscore donc, ça pourrait expliquer qu'il ne soit pas trouvé?

            Cordialement
            0
            1. Non c'est bon j'ai bien vérifié tout est ok, les underscores sont là, je ne vois vraiment pas pourquoi il ne le trouve pas
              Merci de votre aide quand même
              0
            2. Contributeur
              @MrLemonSans vouloir insister, sommes-nous d'accord sur l'écriture:

              C:\\Utilisateurs\bline\Bureau\Lycee\Fresque_du_Climat\ISN\le_rechauffement_climatique.py

              Je pense comme yg_be que c'est le chemin d'accès qui pose problème, si tant est que le double-clic sur le fichier lance l'interpréteur python.

              Bonne soirée
              0
            3. @georges97Il y a pas de soucis je prends toutes les hypothèses, et non ce n'est pas ça c'est :
              C:\\Utilisateurs\bline\\Bureau\Lycee\\Fresque_du_Climat_ISN\Le_rechauffement_climatique.py
              Et oui c'est juste ça
              Merci bonne soirée à vous
              0
            4. Contributeur
              @MrLemonMeLemon,

              Si l'"hypothèse" de yb_be (et la mienne) est exacte, il faut remplacer les doubles slashes inversés \\Bureau\Lycee\\ par de simples slashes inversés.

              Il me semble que si votre graphie ne fonctionne pas, c'est qu'il peut y avoir un problème dans le chemin que vous utilisez, non?

              Faîtes le test dans la fenêtre de saisie de l'explorateur de fichiers pour ouvrir Le_rechauffement_climatique.py
              0
          6. oui il n'aime pas les caractères accentués : renomme tout ça et ca va aller !

            moi, en général, dans les noms de fichiers et de dossiers, je ne mets jamais de caractères exotiques, ni d'espaces:

            C:\\Utilisateurs\\bline\\Bureau\\Lycee\\Fresque_du_Climat\\ISN\\le_rechauffement_climatique.py
            0
            1. Incroyable rien ne change, il met toujours qu'il ne trouve pas le fichier pourtant on est d'accord que le chemin est bon ?



              0
            2. Contributeur
              @MrLemonmoi j'essaierais sans doubler les contre-oblique.
              0
            3. @yg_beles slashs à l'envers c'est ça ?
              0
            4. @yg_berien ne change
              0
            5. Contributeur
              @MrLemones-tu certain que le fichier est dans ce dossier?
              0
          7. Il faut faire qqc pour qu'il soit dans le Path ?
            0
            1. Bizarre

              Car python n'étant pas dans le path, la commande python est donc inconnue et tu devrais avoir un message d'erreur :
              'python' n'est pas reconnu en tant que commande interne, ...............
              0
              1. Je sais pourquoi!
                0
              2. J'ai réussis à mettre python dans Path, maintenant le problème c'est qu'il n'arrive pas à ouvrir le programme



                C'est peut être car il n'accepte pas les "é" ?
                0
            2. Oui voilà ça le ré-affiche
              Et non je n'ai pas Python dans le path Windows
              0
              1. Pas même un message d'erreur dans la fenêtre ?
                tu fait entrer et ca ré affiche le prompt C:\users\Bline> ?

                As-tu bien le chemin vers l'Install Python dans le PATH Windows ?

                0
                1. Je fais entrer mais rien ne se passe
                  0
                  1. et donc quand tu lance la fameuse commande

                    python "C:\\ ...................." dans l'interpréteur de commandes, ca donne quoi ?
                    0
                    • 1
                    • 2