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

Déploiement/Installation Python Discussion :

aide options cx_freeze


Sujet :

Déploiement/Installation Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut aide options cx_freeze
    Bonjour

    Je sollicite votre aide pour utiliser cx_freeze, j'essaye de transformer un fichier .py en .exe, pour l'instant sans succès, j'ai testé jusqu'ici plusieurs solutions trouvé sur le net sans trop comprendre le sens de ce que je faisais

    Pour résumer, j'ai un fichier redressement_image_seq.py sur mon bureau à coté d'un fichier setup.py qui contient le code suivant (comme indiqué dans la doc)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
    from cx_Freeze import setup, Executable
     
    # On appelle la fonction setup
    setup(
        name = "redressement_image_seq",
        version = "0.1",
        description = "redressement_image_seq",
        executables = [Executable("redressement_image_seq.py")],
                       )
    je converti ensuite mon fichier .py en .exe en utilisant la fonction suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Antoine\Desktop>python setup.py build
    pas de message d'erreur particulier à la suite de cette commande

    mon .exe se trouve alors dans le dossier build\exe.win32-2.7\
    je vais dans le dossier puis je lance l'exe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Users\Antoine\Desktop\>cd build\exe.win32-2.7
    C:\Users\Antoine\Desktop\build\exe.win32-2.7>
    C:\Users\Antoine\Desktop\build\exe.win32-2.7>redressement_image_seq.exe
    et j'obtiens le message d'erreur suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImportError: No module named backend_qt4agg

    je pense qu'il faut jouer avec les options dans le fichier setup.py, si vous avez des doc pour expliquer comment faire ça de manière simple à quelqu'un qui n'a pas l’habitude de programmer en python

    pour info, j'utilise les modules suivant dans mon fichier .py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from struct import pack
    from pylab import fromfile, reshape
     
    import matplotlib.pyplot as plt #plt.close(), plt.figure(), plt.show
     
    import numpy as np 
    #array, zeros, np.linalg.det, np.dot, np.linalg.inv,np.meshgrid
     
    from scipy import interpolate
     
    from Tkinter import *
    import tkFileDialog # tkFileDialog.askopenfilename
    import tkMessageBox #  tkMessageBox.showwarning, tkMessageBox.showinfo

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    bon je continue d'avancer,

    j'ai réussi à contourner le problème de conversion en .exe en utilisant le setup.py suivant
    (trouvé sur 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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
     #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    # 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 = []
    packages = ["numpy","struct","pylab","matplotlib","scipy","Tkinter","tkFileDialog","tkMessageBox"]
     
    options = {"path": path,
               "includes": includes,
               "excludes": excludes,
               "packages": packages
               }
     
    #############################################################################
    # preparation des cibles
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"
     
    cible_1 = Executable(
        script = "redressement_image_seq.py",
        base = base,
        compress = True,
        icon = None,
        )
     
     
     
    #############################################################################
    # creation du setup
    setup(
        name = "redressement_image_seq",
        version = "0.1",
        description = "redressement_image_seq",
        author = "Antoine",
        options = {"build_exe": options},
        executables = [cible_1]
        )
    le programme .exe se lance bien et fonctionne sur mon pc, maintenant lorsque je le teste sur un autre pc, j'ai un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImportError DLL Load failed
    plus qu'à trouver comment résoudre tout ça ....

    Nom : Sans titre.png
Affichages : 808
Taille : 52,7 Ko

  3. #3
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Points : 8 442
    Points
    8 442
    Par défaut
    Salut,

    Un petit post qui peut t'aider concernant cx_freeze: http://www.developpez.net/forums/d13...reeze-windows/
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par toitoinebzh Voir le message
    j'ai réussi à contourner le problème de conversion en .exe en utilisant le setup.py suivant
    (trouvé sur http://python.jpvweb.com/mesrecettes...p?id=cx_freeze)
    Au moins, tu as de bonnes sources ...

    Quand on change de PC, on peut avoir des problèmes si les 2 Windows n'ont pas la même version. Pour éviter ça, on ajoute au setup.py de quoi charger les dll Windows du Windows qui a servi au traitement cx_freeze.

    Pour ça, on ajoute à la fin de l'enregistrement des options:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # pour inclure sous Windows les dll system necessaires
    if sys.platform == "win32":
        options["include_msvcr"] = True
    Si ça ne suffit pas, voir ce qu'il y a à la ligne 10 de "redressement_image_seq.py".
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    bonjour

    merci pour ces premiers commentaires

    j'ai testé l'option "options["include_msvcr"] = True" sans effet ...

    j'ai aussi l'impression que le soucis vient de la version de windows

    je suis sur win 7 - 64 bit et l'exe obtenu fonctionne sur ce pc mais pas sur les autres (aussi 64 bits)

    par contre je vient de tester cx_freeze avec un pc win 7 - 32 bit et le exe obtenu fonctionne sur mon pc (j'utilise pourtant la même version de python, j'ai installé la suite python(x,y) )

    concernant la ligne 10, si ça n'a pas trop bougé depuis la dernière fois, c'est un import de module

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Avec un PC Windows 64 bits, si tu utilises un Python 64 bits, le programme exe après traitement par cx_freeze ne marchera que sur des Windows 64 bits.

    Alors que sur Python 32 bits, ça marche sur Windows 32 et 64 bits.

    Si c'est le cas: passe à Python 32 bits.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    je pense être en 32 bit

    python(x,y) propose d'ailleurs une seule version d'installation (donc 32 bits pour passer partout) et je crois avoir vu un 32 bit dans le prompt de python (je vérifie ça demain ... pc boulot)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    finalement ma version de python est bien su 32 bits sur un windows 7 -64 bits
    Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32

    je convertis le fichier python en exe avec un pc 32 bits en attendant, par contre je rencontre un soucis

    mon programme réalise un traitement sur un fichier binaire (lire le fichier, puis ecrire les données dans un autre fichier après traitement), pour une raison que j'ignore le traitement fonctionne bien avec le fichier python

    par contre, il ne fonctionne pas toujours avec le .exe, une erreur apparait et mon traitement s'arrête en cours de fichier ( ce qui est bizarre, c'est que l'erreur semble apparaitre toujours au même endroit pour un fichier donné)

Discussions similaires

  1. [Débutant] Aide options optimset
    Par sid85 dans le forum MATLAB
    Réponses: 10
    Dernier message: 20/06/2011, 20h03
  2. Comment afficher un argument sans l'aide d'une option
    Par mundu dans le forum Général Python
    Réponses: 3
    Dernier message: 25/04/2008, 23h17
  3. Réponses: 6
    Dernier message: 26/06/2007, 10h36
  4. Réponses: 20
    Dernier message: 07/05/2007, 16h46
  5. Réponses: 3
    Dernier message: 07/10/2005, 12h07

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