Partage
  • Partager sur Facebook
  • Partager sur Twitter

compiler un projet python

empaqueter l'interpréteur avec mon projet python

    21 janvier 2018 à 15:04:54

    Salam tout le monde

    j'espère que vous vous portez toutes et tous bien , voilà j'ai un problème, j'ai créé une application programmée en python capable de traiter une sorte d'images numériques ayant l'extension fit (application graphique grâce au module Tkinter) , donc le dossier de mon projet s'appelle TP11 se trouve dans C:/  comporte les scripts python et les sous dossiers suivants :

    scripts python :

    1 : __init__.py

    2 : intercomplete.py (c'est le script principal ce lui que j'exécute et qui appelle tous les autres)

    3 : traitement.py

    4 : cadre1.py

    5 : cadre2.py

    6 : cadre3.py

    7 : JPLEPH.405 (fichier utilisé par l'un de mes script python pour quelques éphémérides dont j'ai besoin pour le traitement des données) 

    sous dossiers :

    1 : data (contient des fichiers txt)

    2 : data1  (contient des fichiers txt)

    3 : header  (contient des fichiers txt)

    4 : superposition :

         4.1 : __init__.py

         4.2 : superposition.py

         4.3 : 6 fichiers txt

    5 : sommation : 

        5.1 : __init__.py

        5.2 : sommation.py

        5.3 : 1 seul fichier txt

    6 : superposition2D :

        6.1 : __init__.py

        6.2 : superposition2D.py

        6.3 : 40 fichiers txt

    7 : tableau_phases :

       7.1 : 1 fichier txt

       7.2 : 1 fichier excel

    8 : images (contient des images fits)

    9 : images_1D (contient une image png et une image pdf)

    10 : image_sup1D (contient une image png et une image pdf)

    11 : image_sup2D (contient une image png et une image pdf)

    c'est la structure de mon application que j'ai créée et biensur les scripts python importent des modules python 

    mon problème que je veux rendre cette application exécutable et portable j'ai utilisé cx_freeze mais en compilant le script principal intercomplete.py j'ai pas réussi est ce que vous pouvez m'aider à réaliser ça

     N.B : le fichier setup.py c'est un script avec le quel j'ai essayé de empaqueter l'interpréteur avec mon projet pour le rendre exécutable mais ça marche si on a un seul script mais avec une programmation modulaire comme le mien ça marche pas

    merci d'avance

    pour plus de clarté je insère une capture de dossier TP11 de mon projet 

    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2018 à 20:55:20

      Bonjour,

      Une fois que tu as importé a utilisé Cx_Freeze sur un fichier, il importe les modules mais pas les fichiers. Et j'ai eu ce problème auf que moi c'était des images.

      Donc après l'utilisation de Cx_Freeze, il y a le dossier "Build" qui apparait, tu vas dedans puis dans le dossier du nom de ton programme.

      Et là tu as parmis tout les autres fichier l'executable de ton fichier python (en .exe maintenant).

      Et bien c'est à cet endroit que tu copies tout tes fichiers. Même si ça fait un gros bordel c'est pas grave.

      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2018 à 3:05:41

        merci luckykamon pour ta réponse

        le problème que j'ai fait ça déjà avec le fichier principal qui appelle tous les autres intercomplete.py mais le problème que y avait beaucoup de problème avec plusieur call back, si tu pourrais me dire quoi faire étape par étape j'en serai très reconnaissant 

        cordiallement

        -
        Edité par youssef2_41 27 janvier 2018 à 3:11:37

        • Partager sur Facebook
        • Partager sur Twitter
          27 janvier 2018 à 11:49:24

          Je précise que je suis sous linux (Ubuntu):

          Alors pour commencer, tu vas dans ton dossier qui contient ton script principal, tu te cré un fichier setup.py avec cecis dedans:

          from cx_Freeze import setup, Executable
          setup(
              name = "intercomplete",
              version = "0.1",
              description = "Description de ton fichier",
              executables = [Executable("intercomplete.py")],
          )
          

          Tu ouvres un terminal au même endroit que ton script principal (le même que celui où tu vient de mettre "setup.py")

          Dans le terminal tu tapes: python2.7 "setup.py" build

          Tu dois modifier 2.7 selon le nom de ta version python

          Puis le module fait son travail et après 30s environ (sur mon ordinateur)

          Tu obtient 2 nouveaux dossiers dans ton dossier où se trouve ton script principal

          Tu ouvre "build" puis "nomdetonprogramme" et là tu copies tout tes fichiers que le script a besoin (tout ceux que tu as listé dans ton 1er message je suppose)

          Et ensuite tu envoie le dossier build et dist sur un ordinateur avec windows et ça fonctionne

          Après a partir de windows directement je n'ai jamais réussi

          • Partager sur Facebook
          • Partager sur Twitter
            27 janvier 2018 à 21:03:32

            Merci beaucoup luckykamon

            j'essayerai ce que tu m'as dit étape par étape et je te répondrai inchallah si ça marche ou pas, je veux tout d'abord terminer le projet après au boulot

            merci infiniment

            • Partager sur Facebook
            • Partager sur Twitter
              9 novembre 2018 à 19:56:07

              reslm luckykamon 

              j'ai essayé ce que tu m'as dit mais voilà s'exécute pas j'ai capté cette traceback merci de me dire si tu as compris quelque chose dans cette affaire 

              c'est cmd sous windows7

              cordialement et merci d'avance

              • Partager sur Facebook
              • Partager sur Twitter
                10 novembre 2018 à 20:24:20

                On peut inclure des fichiers avec Cx_Freeze:

                setup(
                    name='myproject',
                    author='myname',
                    author_email='myemail@example.com',
                    version='0.1',
                    description='something',
                    options={'build_exe': {'includes': ['asyncio.compat'],  # liste de modules, pour inclure ceux qui ne le sont pas par défaut
                                           'include_files': ['myfile.txt'],  # liste de fichiers
                                           'excludes': ['_decimal']}},  # liste de modules, pour exclure ceux qui sont inclus par défaut (pour avoir un résultat plus léger)
                    executables=[Executable('myproject.py', base='Win32GUI', icon='myicon.ico')],
                )



                -
                Edité par thelinekioubeur 10 novembre 2018 à 20:25:22

                • Partager sur Facebook
                • Partager sur Twitter
                  11 novembre 2018 à 1:32:36

                  salam thelinekioubeur merci pour ta réponse

                  stp j'ai pas compris les ligne 7, 8 et 9

                  est ce que la liste des modules c'est à dire les import dans les scripts de mon projet? et pour les liste des fichiers est ce que les fichier txt seulement et comment inclure plusieurs fichiers est ce que on fait comme ça include_files': ['myfile1.txt', myfile2.txt'... 'etc'

                  et cette linge excludes': ['_decimal'] je la comprend pas stp si tu me donne un petit exemple plus claire de mon dossier de projet

                  cordialement

                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 novembre 2018 à 2:05:30

                    Dans include_files tu met tous les fichiers dont ton projet a besoin: txt, images... et oui on fait comme ça:

                    'includes_file': ['file1.txt', 'file2.png', 'file3.html']

                    une liste python quoi...

                    Pour includes: en principe à la base j'essaye sans, et si j'ai une erreur "ModuleNotFoundError" ou autre j'ajoute le module concerné dans la liste. asyncio.compat c'est juste un exemple. Par rapport à ton erreur plus haut j'essayerai de mettre "collections.sys" dans la liste même si c'est bizarre...

                    Pour excludes c'est facultatif, ça sert juste a optimiser et avoir un résultat au poids plus léger. Là j'ai mis le module _decimal c'est juste un exemple, j'ai un projet avec 156 modules dans excludes.

                    Au passage le titre du sujet est "compiler un projet python", mais ça ce n'est pas possible. Ce que fait cx_freeze c'est empaqueter l'interpréteur python avec tous les codes pythons utiles.

                    -
                    Edité par thelinekioubeur 11 novembre 2018 à 2:11:12

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 novembre 2018 à 15:19:16

                      Bonjour,

                      Où peut-on voir les modules inclus par défaut ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 novembre 2018 à 16:09:02

                        merci beaucoup thelinekioubeur juste pour te mettre dans la scène mon projet en fait contenu dans un dossier TP11 et ce nom est très important pour mon projet je peux pas le modifier car dans le script je me base sur ce nom et TP11 doit être dans C: sous windows7, autre chose les sous dossiers dans TP11 quelques uns comprtent des scripts python d'autres non servent acquérir les résultat des autres scripts commes les graphes les fichiers txt , les fichiers que j'importe sont des fichiers fits qui se traitement est ce que ces fichiers fits je dois les insérer dans includes_files??? sachant que le nombre et les noms de ces fichiers varient selon les fichiers que je veux traiter,,?? et sans oublier t'informer que j'ai utilisé l'IDE Anaconda comportant beaucoup de modules scientifiques et j'ai installé d'autre modules séparément pour compléter mon travail comme pyfits, PyAstornomy etc

                        pour LouFox1 personnellement je sais pas où peut ton voir les modules pardéfaut Merci de demander  à thelinekioubeur si il pourra nous aider

                        cordialement

                        -
                        Edité par youssef2_41 11 novembre 2018 à 16:14:20

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 novembre 2018 à 2:12:25

                          reslm tout le monde voilà d'après avoir fait tout ce qui vous m avez indiqué en haut je rencontre ce problème que je sais pas comment l'enjamber j'ai eu mon fichier intercomplete.exe après son exécution j'ai cette erreur comme illustrée ci dessous sachant que j'utilise Anaconda

                          merci d'avance

                          -
                          Edité par youssef2_41 17 novembre 2018 à 2:13:50

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 novembre 2018 à 11:18:01

                            Essaye d'ajouter matplotlib.backends._tkagg dans includes.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 novembre 2018 à 12:29:19

                              merci je vais essayer et je te dirai si ça marche ou pas merci infiniment

                              ça marche plus dès l'exécution de python setup.py install ça donne :

                              -
                              Edité par youssef2_41 17 novembre 2018 à 13:28:08

                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 novembre 2018 à 16:27:06

                                Et si tu met seulement "matplotlib.backends" ? Ou seulement "matplotlib" ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 novembre 2018 à 19:59:27

                                  j'ai essayé les deux mais ça donne tjrs ce message d'erreur

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 novembre 2018 à 23:08:31

                                    merci beaucoup mais le problème que le message d'erreur concernant l'importation survient quand je clique sur l'exécutable créé après avoir tapé : 

                                    python setup.py install

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 novembre 2018 à 19:24:37

                                      reslm tout le monde

                                      j'ai fait une petite recherche sur Internet j'ai trouvé un code python pour setup.py d'une personne qui avait rencontré le même problème lors de l'exécution et j'ai copié collé le code (regardez ci dessous)  

                                      # -*- coding: utf-8 -*-
                                      """
                                      Created on Thu Nov 22 23:49:34 2018
                                      
                                      @author: youssef
                                      """
                                      
                                      # source d'inspiration: http://wiki.wxpython.org/cx_freeze
                                       
                                      import sys, os
                                      from cx_Freeze import setup, Executable
                                       
                                      #############################################################################
                                      # preparation des options 
                                      path = sys.path.append(os.path.join("..", ".."))
                                      includes = []
                                      excludes = ['collections.abc']
                                      include_files=['logo4.gif', 'JPLEPH.405']
                                      packages = ["numpy","struct","pylab","matplotlib","scipy","Tkinter","tkFileDialog","tkMessageBox", "ttk", "collections", "math", "tkColorChooser", "subprocess", "time", "os", "shutil", "astropy", "pyfits", "datetime",  "decimal", "pandas", "astropy", "PyAstronomy", "sqlite3", "operator", "sys"]
                                      #, "os.path","astropy.io","scipy.misc", "matplotlib.pyplot",, "scipy.interpolate"
                                      options = {"path": path,
                                                 "includes": includes,
                                                 "excludes": excludes,
                                                 "include_files": include_files,
                                                 "packages": packages,
                                                 }
                                      # pour inclure sous Windows les dll system de Windows necessaires
                                      if sys.platform == "win32":
                                          options["include_msvcr"] = True## ajouter pour vérifier c'est le script fontionne ou pas et pour inclure sous Windows les dll system necessaires
                                       
                                      #############################################################################
                                      # preparation des cibles
                                      base = None
                                      if sys.platform == "win32":
                                          base = "Win32GUI"
                                          ##options["include_msvcr"] = True## ajouter pour vérifier c'est le script fontionne ou pas et pour inclure sous Windows les dll system necessaires
                                       
                                      cible_1 = Executable(
                                          script = "C:\TP11\intercomplete.py",
                                          base = base,
                                          compress = True,
                                          icon = None,
                                          )
                                       
                                       
                                       
                                      #############################################################################
                                      # creation du setup
                                      setup(
                                          name = "Spectro_Ouka",
                                          version = "1.0",
                                          description = "Elaboration des fichiers fits pretraites et filtres",
                                          author = "El jariri Youssef",
                                          options = {"build_exe": options},
                                          executables = [cible_1]
                                          )

                                      la vérité que je comprend pas certaines lignes par exemple  cette ligne :

                                      # preparation des options 
                                      path = sys.path.append(os.path.join("..", ".."))

                                      et après l'installation j'ai obtenu mon .exe une fois je le lance j'obtiens ce message d'erreur

                                      merci pour votre aide

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 novembre 2018 à 9:14:12

                                        Tu as besoin de scipy ? Si non, retire le de "packages".

                                        Et pour le code path = .. c'est une erreur, la méthode "append" renvoie None...

                                        Je pense qu'il a voulu mettre dans l'option "path" le path de python + le dossier ..\..

                                        -
                                        Edité par thelinekioubeur 24 novembre 2018 à 9:14:27

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          24 novembre 2018 à 13:09:01

                                          donc qu'est que je dois faire avec path exactement stp

                                          pour scipy je l'ai retiré de "packages" mais après l'obtention de .exe et le lancer j'ai eu cette fenetre 

                                          -
                                          Edité par youssef2_41 24 novembre 2018 à 13:30:45

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          compiler un projet python

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown