Partage
  • Partager sur Facebook
  • Partager sur Twitter

this application failed to start because no qt pla

    30 novembre 2021 à 16:32:45

    J'ai un problème au niveau de mon exécutable, j'ai converti mon code .py en .exe avec pyinstaller (version 4.7) (ce que j'utilise souvent), l'exécutable s'ouvre bien mais en arrivant a la moitié de la barre de progression il crache et renvoie l'erreur sur la photo.

    J'ai essayé avec certaine solution proposé sur google, par exemple celle de mettre l'ordi en mode sans échec mais le problème persiste.
    Je travaille sur Annaconda3 et avec Jupyter notebook, du coup j'ai tenté de réinstaller Anaconda, et donc réinstaller pyinstaller et créer a nouveau mon .exe mais sans résultat. La version du python sur l'anaconda que j'utilise est : 3.8.5
    Quelqu'un aura t'il une idée comment régler cela SVP ?
    Ps : C'est la première fois que je fasse face a ce problème, mine de rien je suis toujours le même process pour créer mon exécutable.

    -
    Edité par HaPy19 30 novembre 2021 à 16:39:21

    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2021 à 17:26:40

      tu as ajouté les modules Qt pour la création de l'exe ? le message semble indiqué qu'il n'y a pas le plugin pour Qt/PySide  https://github.com/pyinstaller/pyinstaller/issues/5414
      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2021 à 18:53:42

        umfred a écrit:

        tu as ajouté les modules Qt pour la création de l'exe ? le message semble indiqué qu'il n'y a pas le plugin pour Qt/PySide  https://github.com/pyinstaller/pyinstaller/issues/5414


        J'ai pas bien compris leurs réponses, j'ai suivi la vidéo dans ce lien, je crois que c'est un peu la même chose :https://www.youtube.com/watch?v=lUmS6XhuPLI

        Sauf que je n'arrive pas a trouvé le dossier PyQt5_tools ni PyQt5 et donc je l'ai installé via cmd : pip install PyQt5, mais j'arrive toujours pas a trouver le dossier PyQt5_tools pour faire le copier coller, j'ai essayé de l'installer par cmd mais je n'arrive pas.

        A cet égard, j'ai désinstaller mon anaconda (python v3.8.5) et j'ai installer la nouvelle avec Python v3.9.7, La je trouve bien les deux dossiers dans site_package, mais j'ai eu un autre problème.

        J'ai bien adapté mon code a python 3.9.7 puisque y a eu des changement a faire au niveau de module xlrd en ajoutant ces lignes de code : 

        import xlrd 
        xlrd.xlsx.ensure_elementtree_imported(False, None)
        xlrd.xlsx.Element_has_iter = True

        j'ai même installer l'ancienne version de xlwt.

        Le code désormais fonctionne parfaitement, sauf quand je lance mon .exe, a un quart de la barre de progression il me renvoie l'erreur suivante, j'ai cherché sur google apparemment c due a la nouvelle version de matplotlib mais je ne comprend comment le résoudre ? La chose que je n'arrive pas a comprendre aussi est que pourquoi le code fonctionne sans la moindre des problème hors que le .exe non !!!!

        Ps : Je n'ai pas eu cette erreur dans l'ancienne version de anaconda.

        Une autre question : Je devrais envoyé cet outil a un collègue, pour que ca marche chez lui il devrait installer anaconda comme moi ou pas la peine ? Sachant que pour l'ancienne version de cet outil, il lui as fallu installé anaconda avec Python v3.8.5

        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2021 à 19:42:30

          a priori il demande une mise à jour de matplotlib (version 3.3.4) vu le message affiché "you probably need an updated matplotlibrc fil from ...." parce qu'il ne reconnait pas xtick.labelcolor (entre autres)

          ou  dans la version de la librairie matplotlib incluse dans le script de génération du .exe

          avec le .exe (fonctionnel), il ne devrait y avoir besoin de rien (en principe); si tu renvoies l'ensemble des scripts, il faudra au moins python dans une version compatible avec ton code et la nécessité d'installer les mêmes modules que toi (mêmes versions)

          peut-être utilisé auto py 2 exe à la place de pyinstaller seulement https://github.com/brentvollebregt/auto-py-to-exe 

          Edit: lien corrigé, il fallait juste rajouté le e terminal à l'adresse dans le navigateur

          -
          Edité par umfred 2 décembre 2021 à 12:52:51

          • Partager sur Facebook
          • Partager sur Twitter
            1 décembre 2021 à 20:17:36

            Ton lien ne fonctionne pas, quand je clique dessus il me renvoie l'erreur 404.

            Sinon c'est quoi la différence entre pyinstaller et py to exe, ce n'est pas le même principe de génération de  .exe ou ? Y aura plus le problème de dependances avec le py to exe ?

            J'ai remis l'ancienne version de Anaconda (Python 3.8.5), après avoir désinstaller la nouvelle, j'ai seulement copie les deux fichier PyQt5 et PyQt5_tools avant la désinstallation et je les ai collé dans le nouveau site_package de celle que je viens d'installer (avec Python 3.8.5). J'ai pas eu tout les fichiers comme la vidéo précédente mais j'ai quand même copier le folder platforms de PyQt5 et je l'ai mis dans PyQt5_tools comme sur la vidéo. J'ai fait la conversation et la une autre erreur qui apparait a la moitié de la bar de progression :

            Ps : Avant de modifier mon code avec la partie du graphe qu'on a fait ensemble j'ai pas eu tout ces erreurs de conversion, J'en ai fait pleins de version avant et a chaque fois je le convertis de la même façon et je n'ai jamais eu ces problèmes, ce n'est pas lié a ce qu'on a modifié quand même !!puisque on a pas importer de nouvelle librairies ni modules, je demande ca vient d'où tout ces problèmes ?

            -
            Edité par HaPy19 1 décembre 2021 à 22:25:29

            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2021 à 13:06:17

              ce qu'on ne sait pas comme info, c'est qu'est-ce que c'est cette application? qu'est-ce qu'elle est censé faire? 

              En principe, il n'y a rien à copier, pyinstaller est censé trouver les modules utilisés par lui même; ou lui indiquer dans un fichier de spec (si plusieurs scripts, il y a une manip à faire > https://pyinstaller.readthedocs.io/en/stable/spec-files.html#example-merge-spec-file  )

              • Partager sur Facebook
              • Partager sur Twitter
                2 décembre 2021 à 16:28:17

                Le lien github c'est pour un python 3.5 ? Je suis sur Python 3.8.5.

                C'est une application de reporting, pour la rédaction d'un rapport sous format excel. A partir de 3 fichiers excel en entrée, l'outil recopie quelques parties de ces trois fichiers et il les mettent dans deux tableaux et un graphe dans un fichier excel qui renvoie en sortie. Et pour faire ca, j'ai utilisé des librairies comme matplotlib, pandas, tkinter, openxyl, et des modules comme xlrd et xlwt. Ce n'est pas une application très compliqué. Ce qui me parait bizarre est que quand je lance mon code sur jupyter notebook ca fonctionne parfaitement mais quand après la conversion le .exe revoie des erreur de dépendances … ?

                • Partager sur Facebook
                • Partager sur Twitter
                  2 décembre 2021 à 17:57:31

                  non, c'est python >=3.6 voir les Prerequisites

                  Sinon tu utilises quelle commande pour créer ton ex? peut-être rajouter les infos de debug en rajoutant -d imports -d bootloader (si pace n'est pas déjà le cas) https://pyinstaller.readthedocs.io/en/stable/usage.html#how-to-generate 

                  -
                  Edité par umfred 2 décembre 2021 à 17:59:05

                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 décembre 2021 à 18:21:25

                    La commande que j'utilise est :

                    pyinstaller -F -i "l'emplacement de l'icon" nomDeFichier.py

                    Donc la tu propose (si j'ai bien compris) :

                    pyinstaller -F -i "l'emplacement de l'icon" nomDeFichier.py -d imports -d bootloader 

                    ?

                    Sinon j'ai deja fait ca :

                    pyinstaller -F -i "l'emplacement de l'icon" nomDeFichier.py --debug all 

                    Mais ca je l'ai fait pour qu'il m'affiche l'endroit exacte ou l'outil crache.

                    -
                    Edité par HaPy19 2 décembre 2021 à 18:26:17

                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 décembre 2021 à 18:51:34

                      le --debug all comprend déjà le -d imports et - bootloader

                      et donc avec --debug all; tu vois qu'il te charge bien les modules utilisés sans warning ou erreur ?

                      si tu utilises en environnement virtuel, la commande pysintaller est lancé depuis cet environnement virtuel ou pas ? 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 décembre 2021 à 22:32:05

                        Oui il charge bien les modules, il se bloque ici :

                        Mais ca je crois que c'est juste un warning puisque il m'affiche le même quand j'exécute le code sur jupyter notebook, et pourtant le code continue son travail et il ne crache pas :

                        Oui j'utilise anaconda, j'ai pas installé de python a part, donc oui forcément depuis cet environnement que ca lance. J'ai déjà regardé dans le fichier site_package de anaconda et j'ai bien trouvé les fichiers d'installation de pyinstaller.

                        Sinon y'a une commande pour s'assurer que pyinstaller se lance bien depuis anaconda, mais je ne vois pas le pourquoi pas vu que python est dans anaconda et j'ai bien ajouté anaconda dans le path lors de l'installation, mais j'arrive pas a installer des modules avec conda je le fais toujours avec pip .

                        Je crois que je dois utiliser une autre méthode pour convertir mon code. Je viens de désinstaller et installer une autre version de anaconda avec python 3.7.0, du coup il me remet la première erreur avec le PyQt5. T'as pas une autre méthode pour que je puisse le convertir a part pyinstaller, sachant que je vais remettre mon ancien anaconda avec Python 3.8.5 donc ?

                        -
                        Edité par HaPy19 3 décembre 2021 à 0:08:56

                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 décembre 2021 à 12:37:55

                          en fait, tu dois avoir une console anaconda (ou invite de commande anaconda) qui devrait servir pour lancer les commandes pip et autres.
                          L'autre méthode, c'est ce que j'ai indiqué plus haut avec "auto py to exe" https://github.com/brentvollebregt/auto-py-to-exe
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 décembre 2021 à 15:03:05

                            D'accord, ca marche.

                            J'ai une petite question, c'est normal qu'il m'affiche pas la photo de graphe ici dans le rapport de sortie :

                            Avant il met bien le graphe sous format d'une .png dans le même emplacement dans le rapport, mais la il affiche un carré blanc et pourtant j'ai rien modifié sur ce sujet la, j'ai juste modifié la partie concernant le comment il dessine le graphe (comme tu me l'as montré). Je crois que c'est relié a la taille de l'image, elle est plus grande que l'ancienne qu'il arrive pas a la lire !!? Sinon j'ai essayé de modifié cette ligne :

                             self.progress_bar["value"] = 40
                             root.update()
                            
                             plt.figure(figsize=(8, 4))#### 
                             plt.grid(True)
                                    

                            avant c'était (10,5) je l'ai réduit a (8,5) mais rien n'est changé, toujours un carré blanc. Il m'affiche bien la photo de graphe sur jupyter notebook quand j'exécute le code puisque j'ai lui demandé de me l'envoyé pour faire les tests avant mais le plus important est qu'il mette cette photo dans le rapport. Après j'ai bien demander d'enregistrer la photo dans le fichier la ou se trouve le .exe en format .png et il le fait bien mais toujours un carré blanc. Et pourtant quand je lance l'exécutable, au milieu de la barre de progression, il s'arrête pour afficher la figure et je suis de fermer la fig pour qu'il continue le chargement, ce que je veux aussi le retirer puisque avant il l'ouvre pas durant le chargement. Il l'enregistre dans le fichier avec le .exe et il le met dans le rapport seulement.

                            -
                            Edité par HaPy19 3 décembre 2021 à 15:03:38

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 décembre 2021 à 15:15:51

                              et si tu ouvres l'image directement, tu y vois le graphe ou pas ? si tu recharges manuellement le fichier png depuis excel, ça fonctionne aussi ? si tout ça fonctionne, c'est sans doute un problème de lien vers l'image (il ne me semble pas avoir vu comment tu fais sauvegarde d'image et cette insertion d'image dans excel.)

                              -
                              Edité par umfred 3 décembre 2021 à 15:16:00

                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 décembre 2021 à 15:21:18

                                La photo ne s'ouvre pas, c'est un carré blanc :

                                Je crois que c'est sa taille qui pose le problème. La j'ai réduit la taille a (6,3), il me l'affiche bien sur jupyter mais pas dans le fichier excel (carré blanc) 

                                -
                                Edité par HaPy19 3 décembre 2021 à 15:36:29

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 décembre 2021 à 15:30:48

                                  si en l'ouvrant tu as un carré blanc c'est que l'enregistrement ne se fait pas bien en local. c'est quoi le bout de code qui permet l'enregistrement ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    3 décembre 2021 à 15:35:15

                                    J'ai rouvé ca juste a la fin de code de graphe :

                                    plt.savefig("fig.png")
                                            eb = e1.to_numpy()
                                            self.progress_bar["value"] = 60

                                    m'ai ca je crois que c'est pour l'enregistrer en .png !!!

                                    J'ai trouvé ca aussi, au debut de la partie graphe que je ne comprend pas trop ce qu'il fait :

                                    import matplotlib.pyplot as plt
                                            plt.rcParams.update({
                                                "pgf.texsystem": "pdflatex",
                                                "pgf.preamble": [
                                                    r"\usepackage[utf8x]{inputenc}",
                                                    r"\usepackage[T1]{fontenc}",
                                                    r"\usepackage{cmbright}",
                                                ]
                                            })




                                    -
                                    Edité par HaPy19 3 décembre 2021 à 20:48:51

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 décembre 2021 à 15:43:11

                                      j'ai vu le plt.savefig("fig.png") dans ton autre sujet qui enregistre dans le répertoire de travail; mais cette ligne se situe après le plt.show() or plt.show() génére une autre image. Il faut donc faire le plt.savefig("fig.png") avant le plt.show()

                                      https://stackoverflow.com/questions/9012487/matplotlib-pyplot-savefig-outputs-blank-image 

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 décembre 2021 à 19:24:12

                                        Hallelujah, enfin ca fonctionne. 

                                        J'ai retire complètement le plt.show, mais c'est bien ce que t'as dit. Après y a eu une partie de la photo qui n'apparaît pas donc j'ai du modifier son size.

                                        Pour le .exe, j'ai desinstallé anaconda et j'ai installé une avec python 3.7 sauf que j'ai récupéré les fichiers de PyQt5 et PyQt5_tools de la version avec python 3.9 et je les ai copié dans le site _package de nouvelle anaconda et j'ai copié le dossier platforms comme sur la vidéo YouTube. J'ai lancé ma commande sur cmd.

                                        MERCI INFINIMENT pour toutes tes explications et ton aide.

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        this application failed to start because no qt pla

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        • Editeur
                                        • Markdown