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 :

probleme avec cx_Freeze: file.exe n'est pas une application Win32 valide


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Par défaut probleme avec cx_Freeze: file.exe n'est pas une application Win32 valide
    Hi Everyone !!

    je souhaite créer un exécutable de mon programme via cx_freeze. Mais le fichier nom.exe crée dan le dossier build - apres avoir lancer la cmd : python setup.py build- ne se lance pas , il me donne l'erreur suivante :

    file.exe n'est pas une application Win32 valide

    j'utilise Tkinter dans mon code; et j'ai bien met base="Win32GUI"; voila mon programme setup

    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
    import sys, os
    from cx_Freeze import setup, Executable
     
     
    import os.path
    PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
    os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
    os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
     
     
    includes = ["tkinter"]
    include_files = ["image"]
     
    options = {"includes": includes,
               "include_files": include_files,
               }
     
    base="Win32GUI"
     
    exe = Executable(
     
        script="EssFreeze.py",
     
        base=base,
     
        )
     
     
    #########################################################################
    #                          SETUP PREPARATION							#
    #########################################################################
    setup(
        name = "App",
        version = "1.1",
        description = "waaaalo",
        options = {"build_exe": options},
        executables = [exe]
        )
    Merci !!

  2. #2
    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,

    Je n'ai rien vu d'anormal dans ton setup. Tu peux essayer ça: ajoute les dll de tcl et tk (tcl86t.dll et tk86t.dll) qui se trouvent dans DLLs, avec include_files

    Tu peux aussi supprimer ton "import os.path" qui est inutile ici.

    C'est toujours gênant d'obtenir des erreurs de runtime sans message clair, parce qu'on ne sait pas où chercher. Avant, il faut de toute façon lancer le traitement de cx_freeze dans la console cmd et lire soigneusement les messages affichés pour voir si cx_freeze trouve tout. Et corriger le setup s'il manque des trucs.

    Si ça ne marche toujours pas, tu peux essayer d'ajouter tkinter comme package: packages = ["tkinter"] (avec "T" majuscule pour Python 2).

    Au delà, je ne sais pas, je ne travaille pas avec tkinter.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Tu peux essayer ça: ajoute les dll de tcl et tk (tcl86t.dll et tk86t.dll) qui se trouvent dans DLLs, avec include_files

    .
    j 'ai inclus aussi ces dll tcl tk ; mais ça n a pas marché..

    la console aprés l'exécution de la cmd n affiche aucun msg d'erreur !! je peux pas savoir exactement quil est le problème ; mais je pense que ça a est n'est pas du au langage mais plutôt au system Windows

  4. #4
    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,

    Si cx_freeze ne marche pas avec ton programme, tu peux aussi essayer avec pyinstaller qui marche bien et qui est souvent plus simple à utiliser.

    Sous Windows:

    Pour installer: pip install pyinstaller

    Avec un éditeur de texte, on crée un fichier .bat avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    IF EXIST build RMDIR /S /Q build
    IF EXIST dist RMDIR /S /Q dist
     
    pyinstaller.exe ^
    --clean ^
    --noconfirm ^
    --noconsole ^
    --onedir ^
    --noupx ^
    --add-data ".\monprogramme.png;." ^
    --icon ".\monprogramme.ico" ^
    monprogramme.py
    PAUSE
    (ne pas oublier les "^" en fin de ligne qui indiquent la poursuite de la ligne de commande. Et pas d'espace après le "^"!)

    On commence par supprimer les éventuels répertoires "build" et "dist" issus d'un traitement précédent.

    Avec --add-data, on recopie ce qu'on veut pendant le traitement, ici l'icône png de la fenêtre. le --icon est pour l'icône de l'exe.

    Il suffit ensuite de double-cliquer sur le fichier bat avec le navigateur de fichier, et de consulter l'affichage sur la console (qui restera affichée grâce au "PAUSE").

    Le résultat du traitement se trouve dans le répertoire "dist".

    Avec pyinstaller, on peut aussi créer un fichier unique "xxx.exe" (--onefile au lieu de --onedir), plus facile pour donner à d'autres personnes.

    Comme avec cx_freeze, il faut quelquefois indiquer dans le programme comment accéder aux données car elles changent d'adresse disque après traitement. Par exemple avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if getattr(sys, 'frozen', False):
        REPEXE = sys._MEIPASS # programme traité par pyinstaller
    else:
        REPEXE = os.path.dirname(os.path.abspath(__file__)) # prog. normal
    En cas de difficultés, voir la doc: https://pyinstaller.readthedocs.io/en/stable/.

Discussions similaires

  1. "xx.exe" n'est pas une application Win32 valide
    Par mokochan dans le forum Qt
    Réponses: 3
    Dernier message: 29/11/2016, 08h17
  2. Erreur "eclipse.exe n'est pas une application win32 valide"
    Par Lolitaaa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 18/09/2011, 14h19
  3. "ashAvast n'est pas une application win32 valide"
    Par Speed41 dans le forum Windows XP
    Réponses: 7
    Dernier message: 04/12/2008, 22h50
  4. Avast n'est pas une application win32 valide
    Par ttone dans le forum Sécurité
    Réponses: 11
    Dernier message: 17/07/2008, 09h38
  5. cmd n'est pas une application win32 valide
    Par dlecteur dans le forum Windows XP
    Réponses: 28
    Dernier message: 01/08/2006, 23h22

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