IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

cx_freeze: inclure les données manquantes dans un setup


Sujet :

Python

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut cx_freeze: inclure les données manquantes dans un setup
    Bonjour tous,

    je fais suite à une précédente discussion où je ne savais pas trop comment distribuer des données python:
    http://www.developpez.net/forums/d14...py-matplotlib/

    Maintenant, grâce à votre aide je me suis mis une bonne fois pour toute à "cxfreeze" et j'arrive à faire déjà pas mal de chose à l'aide de ce fichier setup très inspiré de cette page: http://python.jpvweb.com/mesrecettes...p?id=cx_freeze

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    #Icone sous Windows: il faut:
    #=> un xxx.ico pour integration dans le exe, avec "icon=xxx.ico"
    #=> un xxx.png pour integration avec PyQt4 + demander la recopie avec includefiles.
    import sys, os
    from cx_Freeze import setup, Executable
    #############################################################################
    # preparation des options
    # chemins de recherche des modules
    # ajouter d'autres chemins (absolus) si necessaire: sys.path + ["chemin1", "chemin2"]
    path = sys.path
    # options d'inclusion/exclusion des modules
    includes = []  # nommer les modules non trouves par cx_freeze
    excludes = []
    packages = ["numpy","scipy","matplotlib"]  # nommer les packages utilises
    # copier les fichiers non-Python et/ou repertoires et leur contenu:
    includefiles = []
    if sys.platform == "win32":
        pass
        # includefiles += [...] : ajouter les recopies specifiques à Windows
    elif sys.platform == "linux2":
        pass
        # includefiles += [...] : ajouter les recopies specifiques à Linux
    else:
        pass
        # includefiles += [...] : cas du Mac OSX non traite ici
    # pour que les bibliotheques binaires de /usr/lib soient recopiees aussi sous Linux
    binpathincludes = []
    if sys.platform == "linux2":
        binpathincludes += ["/usr/lib"]
    # niveau d'optimisation pour la compilation en bytecodes
    optimize = 0
    # si True, n'affiche que les warning et les erreurs pendant le traitement cx_freeze
    silent = True
    # construction du dictionnaire des options
    options = {"path": path,
               "includes": includes,
               "excludes": excludes,
               "packages": packages,
               "include_files": includefiles,
               "bin_path_includes": binpathincludes,
               "create_shared_zip": False,  # <= ne pas generer de fichier zip
               "include_in_shared_zip": False,  # <= ne pas generer de fichier zip
               "compressed": False,  # <= ne pas generer de fichier zip
               "optimize": optimize,
               "silent": silent
               }
    # pour inclure sous Windows les dll system de Windows necessaires
    if sys.platform == "win32":
        options["include_msvcr"] = True
    #############################################################################
    # preparation des cibles
    base = None
    if sys.platform == "win32":
        #base = "Win32GUI"  # pour application graphique sous Windows
        base = "Console" # pour application en console sous Windows
    icone = None
    if sys.platform == "win32":
        icone = "icone.ico"
    cible_1 = Executable(
        script="hello.py",
        base=base,
        compress=False,  # <= ne pas generer de fichier zip
        copyDependentFiles=True,
        appendScriptToExe=True,
        appendScriptToLibrary=False,  # <= ne pas generer de fichier zip
        #icon=icone
        )
    #############################################################################
    # creation du setup
    setup(
        name="monprogramme",
        version="1.00",
        description="monprogramme",
        author="auteurduprogramme",
        options={"build_exe": options},
    	executables=[cible_1]
        )
    par contre pour certains bout de code, par exemple celui ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.optimize import leastsq
    import FileDialog
    x=np.linspace(0,50,100)
    y_true=5*np.exp(-0.1*x)
    y_meas=y_true+np.random.rand(len(x))
    p0=[];p0.append(1);p0.append(1)
    p=plt.figure(1)
    p=plt.plot(x,y_meas,'bo')
    def residuals1(p, y, x):
            err = y-p[0]*np.exp(-p[1]*x)
            return err
    x=np.linspace(0,50,100)
    y_true=5*np.exp(-0.1*x)
    y_meas=y_true+np.random.rand(len(x))
    plsq = leastsq(residuals1, p0, args=(y_meas, x),maxfev=5000)
    p=plt.figure(1)
    p=plt.plot(x,plsq[0][0]*np.exp(-plsq[0][1]*x),'r.',label="lsq")
    plt.legend()
    plt.show()
    cxfreeze n'arrivent pas à me trouver tout les dll et librairies nécessaires (ici des problèmes avec scipy.optimize) :
    Pièce jointe 164722

    Je me doute que je dois ajouter des chemins dans les listes "includefiles", "includes", "excludes" mais je n'ai pas vraiment compris comment le faire et quoi rajouter dans ces listes ??? des fichiers .py ? des .pyc ?

    pourriez vous m'expliquer qu'es ce que l'on attend dans ce type de listes "includefiles", "includes", "excludes" et comment le faire sur cet exemple "simple" ?


    j'ai trouvé des choses intéressantes sur le net :
    https://bitbucket.org/anthony_tuinin...cx_freeze-with
    mais j'ai deux difficultés : je ne suis pas un craque en anglais et en plus la syntaxe python utilisées est un peu difficile pour moi car je suis débutant (écriture trop condensée)

    pourriez vous me montrer avec une manière simple comment résoudre mon problème s'il vous plait ?

    merci beaucoup pour votre aide et bonne fin d'année

  2. #2
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Salut,

    J'ai été consulté ton ancien post, et à la vu de celui-ci j'ai vu que tu te référais aux recette de Tyrtamos, très bonne chose.

    Concernant ton message d'erreur, je pense que le problème ne vient pas du côté de cx_freeze, mais plutot de Scipy. Si tu regarde bien le message d'erreur, il cherche quelque chose dans les libs Python, du côté de Scipy.

    D’ailleurs si tu cherches le message d'erreur sur le net "from scipy.optimize import minpack2", les réponses renvoyées semblent indiquer un probleme de compatibilité entre scipy et windows 8. D'ou ma question: ne serais-tu pas sur cet OS?

    Un lien trouvé: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy, qui apparemment constitue une version alternative compatible windows 8.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai essayé avec ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.optimize import leastsq
    # import FileDialog
     
    x = np.linspace(0, 50, 100)
    y_true = 5 * np.exp(-0.1 * x)
    y_meas = y_true + np.random.rand(len(x))
    p0 = [];p0.append(1);p0.append(1)
    p = plt.figure(1)
    p = plt.plot(x, y_meas, 'bo')
    def residuals1(p, y, x):
            err = y - p[0] * np.exp(-p[1] * x)
            return err
    x = np.linspace(0, 50, 100)
    y_true = 5 * np.exp(-0.1 * x)
    y_meas = y_true + np.random.rand(len(x))
    plsq = leastsq(residuals1, p0, args=(y_meas, x), maxfev=5000)
    p = plt.figure(1)
    p = plt.plot(x, plsq[0][0] * np.exp(-plsq[0][1] * x), 'r.', label="lsq")
    plt.legend()
    plt.show()
    Mais je travaille avec Python 3.4. J'ai donc installé numpy, scipy et matplotlib.

    J'ai construit le setup.py à partir de la version vide que j'ai donnée. Plusieurs fois, j'ai eu des erreurs de runtime, et au fur et à mesure, j'ai réinjecté ce qui semblait manquer. Ce qui donne à la fin dans le setup:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    packages = ["matplotlib.backends.backend_tkagg", "tkinter", "tkinter.filedialog", "scipy.sparse.csgraph._validation",
                "scipy.special._ufuncs_cxx"]
    Et à la fin: ça marche: j'ai la fenêtre avec le dessin (la courbe avec les points)!!!

    Mais comme il s'agit de Python 3, je ne sais pas si ce sont les mêmes packages qui manqueront.

    => Essaie de réinjecter ce qui manque au runtime avec ton Python 2.7 dans l'option package de setup.py!

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par deusyss Voir le message
    Salut,
    Salut Deusyss et merci beaucoup de prendre le temps de m'aider
    Citation Envoyé par deusyss Voir le message
    J'ai été consulté ton ancien post, et à la vu de celui-ci j'ai vu que tu te référais aux recette de Tyrtamos, très bonne chose.
    oui il a l'air très flexible et comme je n'ai pas trop capté la doc de cxfreeze ça m'aide beaucoup
    Citation Envoyé par deusyss Voir le message
    Concernant ton message d'erreur, je pense que le problème ne vient pas du côté de cx_freeze, mais plutot de Scipy. Si tu regarde bien le message d'erreur, il cherche quelque chose dans les libs Python, du côté de Scipy.
    je ne pense pas que ça vienne de scipy car lorsque je lance mon programme il fonctionne correctement et je n'ai que le problème lorsque j'essai de "compiler" mon programme avec "cxfreeze"...?
    Citation Envoyé par deusyss Voir le message
    D’ailleurs si tu cherches le message d'erreur sur le net "from scipy.optimize import minpack2", les réponses renvoyées semblent indiquer un probleme de compatibilité entre scipy et windows 8. D'ou ma question: ne serais-tu pas sur cet OS?
    Un lien trouvé: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy, qui apparemment constitue une version alternative compatible windows 8.
    en fait non je suis sous windows XP, je ne pense pas que ça soit donc lié à W8. J'ai cru comprendre que pour résoudre ce problème il suffit de donner manuellement accès aux fichiers nécessaires (scipy.optimize) le problème est que je ne comprends pas trop comment le faire...




    Citation Envoyé par tyrtamos Voir le message
    Bonjour,
    salut Tyrtamos et encore merci de me suivre dans mes galères

    Citation Envoyé par tyrtamos Voir le message
    J'ai essayé avec ton code
    Mais je travaille avec Python 3.4. J'ai donc installé numpy, scipy et matplotlib.
    J'ai construit le setup.py à partir de la version vide que j'ai donnée. Plusieurs fois, j'ai eu des erreurs de runtime, et au fur et à mesure, j'ai réinjecté ce qui semblait manquer.
    OK, moi aussi j'ai procédé comme ceci mais avec python 2.7, j'avais des erreurs liées à numpy, scipy ou matplotlib et j'ai donc fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    packages = ["numpy","scipy","matplotlib"]
    et ça a débloqué une bonne partie de mes problèmes (si je n'utilise pas scipy.optimize tout le reste fonctionne)

    Citation Envoyé par tyrtamos Voir le message
    Ce qui donne à la fin dans le setup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    packages = ["matplotlib.backends.backend_tkagg", "tkinter", "tkinter.filedialog", "scipy.sparse.csgraph._validation",
                "scipy.special._ufuncs_cxx"]
    j'aimerais bien que tu m'expliques comment tu en arrives à importer des packages de ce type ? c'est des noms que tu retrouves dans l'erreur qu'affiche cxfreeze lors de la compilation ? par exemple comme tu as su q'il fallait mettre "tkinter.filedialog", cxfreeze t'as dis quelque chose du type "tkinter.filedialog" is missing ?
    Moi j'arrive à comprendre quand je dois rajouter des choses générales du type "numpy", "scipy"...etc mais je ne comprends pas comment tu trouves ces noms de fonctions complexe dont je ne sais même pas à quoi ils correspondent ?

    Ceci dit, j'ai testé ton code et chez moi ça ne résout malheureusement pas le problème car il me dit qu'il n'y a pas de module nommé "tkinter", j'ai essayé de rajouter "import tkinter" dans mon code mais le même message revient... ce tkinter est une bibliothèque spéciale qui doit être installée au préalable ?


    Citation Envoyé par tyrtamos Voir le message
    Et à la fin: ça marche: j'ai la fenêtre avec le dessin (la courbe avec les points)!!!
    Mais comme il s'agit de Python 3, je ne sais pas si ce sont les mêmes packages qui manqueront.
    => Essaie de réinjecter ce qui manque au runtime avec ton Python 2.7 dans l'option package de setup.py!
    mince, j'aimerais bien que ça fonctionne aussi... c'est une galère ce cxfreeze
    en fait j'aimerais bien procéder au même type de fonctionnement que toi mais je ne comprends pas ce qui te fait rajouter tel ou tel package... De plus, ce qui me perturbe c'est que sur le net (cf. mon dernier lien) j'ai l'impression qu'il faut rajouter des choses dans les listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    includes = []
    excludes = []
    includefiles
    mais là aussi je ne comprends pas ce que font exactement ces listes et donc je comprends encore moins ce que je dois mettre dedans

    EDIT: j'ai pensé à un problème d'installation mais j'ai vérifié sur ce site (celui que j'utilise pour installer ds librairies):
    http://www.lfd.uci.edu/~gohlke/pythonlibs/

    et j'ai bien installé numpy, scipy, et matplolib dans le bon ordre et avec les modules obligatoires demandés.... (pas ceux optionnels....)

    j'ai vérifé ce "minpack2" et j'en est trouvé un dans le dossier lib/script-packages/scipy/optimize et il a l'extension pyd: "minpack2.pyd"
    j'ai essayé de le copier dans mon répertoire build/exe32...Etc mais rien n'y fait

    j'ai une question quand même à propos de cxfreeze:
    au lieu de se faire ch... avec ces importations de librairies/modules il n'est pas possible de copier coller carrement les bibliothèses "numpy", "scipy", "matplolib" dans mon répertoire de travail avant de lancer "cxfreeze" ? là au moins il devrait tout trouver ?

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    J'ai bien dit que j'avais des erreurs de runtime, c'est à dire d'exécution.

    En lançant le .exe (je le lance dans la console cmd.exe pour être sûr d'avoir tous les messages d'erreur d'exécution), il vient une fenêtre qui donne le message d'erreur et la dernière ligne dit qu'il ne trouve pas xxx.yyy.zzz: j'ajoute alors ce nom dans la liste des packages. Pourquoi packages? A cause des points!

    S'il ne trouve pas tkinter, c'est parce qu'en Python 2, il s'appelle Tkinter (avec une majuscule).

    cx_freeze fait des choses très complexes, et il faut l'aider un peu quand il ne trouve pas tout de lui-même. Dans certains cas, s'il ne trouve pas un module système simple, on l'ajoute dans la liste des "includes" (on cite simplement son nom entre guillemets et sans son chemin). Pour "excludes": je ne l'ai encore jamais utilisé.

    C'est très différent pour "includefiles": on est sûr que les fichiers et répertoires "non-python" ne seront pas recopiés: il faut donc en faire explicitement la demande! Par exemple: une icône de fenêtre, une image, des fichiers de traduction, des plugins, un répertoire dans lequel il y a des fichiers d'aide, etc...

    [edit] je réponds à ta dernière question: oui, dans certains cas, on peut se contenter de recopier grâce à "includefiles" le module ou le répertoire du package! Mais il ne faut le faire que si rien d'autre ne marche parce que ce n'est pas "très propre" comme boulot...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci beaucoup pour ta réponse.

    je suis reparti de 0 et j'ai executé mon code qui m'a donné ce message:
    Pièce jointe 164755

    ici le message paraît assez clair et en mettant ceci ça semble résoudre le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    packages = ["matplotlib.backends.backend_tkagg"]
    mais maintenant j'ai ce message d'erreur:
    Pièce jointe 164756

    ce message d'erreur est moins clair que l'autre, j'ai essayé d'imorter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    packages = ["matplotlib.backends.backend_tkagg","six"]
    où pas mal d'autre choses mais dans ce cas là je ne trouve pas exactement la syntaxe à employer. Dans le précédent c'était assez facile de comprendre sur base de ton exemple mais ici je ne comprends pas trop la logique et qu'elle module je dois mettre.... ou dirait un sous module du précédent ?

    pourrais tu me dire ce que je dois mettre dans ce cas ci stp ?

    merci

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Ça commence à être compliqué...

    Le module six permet d'écrire du code valable en Python 2 et 3 mais ce n'est pas simple à analyser.

    Essaie d'ajouter "FileDialog" dans la liste de l'option includes. Et "six" n'est pas un package: mets-le aussi dans includes.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci pour ta réponse, ta solution semble corriger ces problèmes, je pense avoir compris le principe pour les includes à présent

    par contre à présent je retombe sur l'erreur de départ où il est spécifié qu'un DLL est manquant.....
    Pièce jointe 164790

    je crois que je vais passer à la vilaine solution qui consiste à copier/coller manuellement toutes les librairies

    Pourrais tu me dire comment procéder pour ceci ? je dois chercher tout les fichiers à l'extension ".py" qui se trouve dans les dossiers numpy, scipy... ainsi que dans tous les sous dossiers et les copier/coller à côté du setup ?

    merci pour ton aide

  9. #9
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par membreComplexe12 Voir le message
    Pourrais tu me dire comment procéder pour ceci ? je dois chercher tout les fichiers à l'extension ".py" qui se trouve dans les dossiers numpy, scipy... ainsi que dans tous les sous dossiers et les copier/coller à côté du setup ?
    Soyons simple: tu copies les répertoires complets (copier-coller) des numpy, scipy et matplotlib qui se trouvent dans C:\Python27\Lib\site-packages, pour les mettre dans la racine du répertoire dans lequel il y a l'exe créé par cx_freeze.

    Essaie d'abord à la main et regarde si ça marche (ce n'est pas garanti), et je ne sais pas si c'est autorisé par la licence: à vérifier.

    Si ok, tu peux demander à cx_freeze de le faire dans le setup.py de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    includefiles = [(r"C:\Python27\Lib\site-packages\numpy", "numpy"),
                       (r"C:\Python27\Lib\site-packages\scipy", "scipy"),
                       (r"C:\Python27\Lib\site-packages\matplotlib", "matplotlib")
                      ]
    Tu remarques qu'on donne ici des tuples composés de 2 adresses: la première est l'adresse absolue du répertoire source, la seconde est l'adresse relative au répertoire de l'exe. Il y aura donc 3 nouveaux sous-répertoires dans le répertoire de l'exe.

    Si ça ne marche toujours pas, sache qu'il y a une autre solution pour distribuer un logiciel Python sous Windows: utiliser un python portable. Grâce à lui, il m'est déjà arrivé de distribuer un programme Python sur une clé USB, et ça marchait très bien. Il suffit de faire un programme .bat comme lanceur.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci beaucoup pour ta réponse

    J'ai passé toute ma journée à faire des tests et après avoir tourné le problème dans tout les sens je n'arrive pas à m'en sortir avec cxfreeze et py2exe
    Si tu as une solution ultra bourrin (même très dégueulasse) qui fonctionne (genre copier tous les ".py" à côté de mon main.py) alors je suis preneur car ça pourrait peut être me servir un jour mais sinon je vais m'arrêter ici pour cxfreeze car il est vraiment pourris ce truc.

    Lors de cette grosse journée de test je suis repassé à Pyinstaller juste pour faire un dernier test et je me suis rendu compte qu'il gère beaucoup mieux les librairies externes et en 2 essais je suis arrivé à débloquer l'unique problème qu'avait Pyinstaller (je me demande pourquoi je me suis acharné sur les deux autres qui sont vraiment merdiques).

    en tout cas merci pour ton aide, c'est grâce à cette discussion que j'ai compris le principe de fonctionnement de ces logiciels et que j'ai pu résoudre le petit bug dans pyinstaller.

    en tout cas je te conseil fortement de passer par ce dernier car j'ai passé plusieurs jours sur cxfreeze et py2exe sans arriver à résoudre mes problèmes et avec Pyinstaller j'ai passé moins d'une heure

    merci encore pour ton aide
    a bientôt

  11. #11
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par membreComplexe12 Voir le message
    en tout cas je te conseil fortement de passer par ce dernier car j'ai passé plusieurs jours sur cxfreeze et py2exe sans arriver à résoudre mes problèmes et avec Pyinstaller j'ai passé moins d'une heure
    Ravi que tu aies trouvé une solution qui te convienne. Jusqu'à présent, j'ai toujours trouvé une solution avec cx_freeze, et malheureusement pour moi, pyinstaller n'est pas encore compatible avec Python 3.

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    en tout cas je te conseil fortement de passer par ce dernier car j'ai passé plusieurs jours sur cxfreeze et py2exe sans arriver à résoudre mes problèmes et avec Pyinstaller j'ai passé moins d'une heure t
    pyinstaller peut paraître plus "user friendly" car il inclut le support de certains packages (dont numpy et scipy). Utiliser un savoir-faire prêt à l'emploi plutôt que se le ré-approprier en y passant du temps est toujours un arbitrage délicat. Tant que çà fonctionne tout va bien mais le jour ou le savoir-faire en boîte ne saura plus faire, il faudra bien s'y mettre...
    Et apprendre à trouver une solution pour "packager" son code.

    De nos jours, "apprendre à trouver" commence par taper quelques mots clés sur son moteur de recherche préféré en espérant que d'autres ont eu des embarras semblables: çà donne toujours des idées! cx_freeze + minpack2 remonte des entrées intéressantes et permet de récupérer des codes pour y pallier.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci en tout cas beaucoup pour votre aide et vos conseils.
    Je vais utiliser pyinstaller pour le moment et le jour où j'aurais une grosse galère j'esserai peut être de repasser à cxfreeze avec ses setup complexes

    bonne fin d'année à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Inclure les données d'un fichier XML dans un fichier
    Par SimOOn dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/04/2007, 16h26
  2. Les données sont dans la base, mais ne s'affichent pas
    Par ryan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/03/2006, 10h59
  3. Réponses: 8
    Dernier message: 19/05/2005, 16h03
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo