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 :

cx_freeze - "cannot get zipimporter error"


Sujet :

Déploiement/Installation Python

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut cx_freeze - "cannot get zipimporter error"
    Bonjour,

    Le dernier programme que j'ai fait (sous Python27, windows7, compil avec cx_freeze 4.3.1) pose un problème lorsque le .exe est utilisé sur certains ordinateurs. Sur la plupart, il fonctionne parfaitement, mais sur certains, il y a le message d'erreur suivant lors du lancement:


    Pour tenter de corriger ça j'ai, d'après les propositions trouvées sur le net :
    - supprimé tous les caractères non ASCII du code (y compris dans les commentaires)
    - ajouté le module "zlib" aux includes du setup et aux import du programme en lui même
    - ajouté "include_msvcr" : True aux options du setup pour le build pour la compatibilité sur différents windows

    Mais le problème persiste ...

    Malheureusement, je ne peux pas accéder directement à l'ordinateur sur lequel il ne fonctionne pas (c'est celui d'un collègue dans une autre boîte) et ai donc peu d'information à son sujet, si ce n'est qu'il est aussi sous windows7 64bits, il a installé Python27 bien que normalement ça ne soit pas nécessaire (mais avant il avait Python26 et ça lui mettait un message d'erreur différent de celui-là ...) vu que le programme marche sur des ordinateurs n'ayant pas python.

    Auriez-vous une idée de comment résoudre ce problème ?

    Merci d'avance

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

    Ce n'est pas facile de trouver la solution sans plus de détails, en particulier sans le setup.py.

    Mais avec les mots "cx_freeze cannot get zipimporter instance" dans google, il y a quelques réponses dont celle-là: http://comments.gmane.org/gmane.comp...freeze.user/29, qui pose le problème des chemins: ça me parait être une bonne direction de recherche.
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    J'avais déjà vu cette discussion, j'ai revérifié par acquis de conscience, mais les noms n'avaient pas été modifiés et ne contenaient que des caractères ascii. Donc le problème ne vient pas de là.

    Le setup.py est ici (il provient d'ailleurs de ton site à 99% Tyrtamos) :

    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
    # -*- 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("..", "..", "biblio"))
    includes = ["re", "pptx", "Tkinter", "tkFileDialog", "tkMessageBox", "lxml", "lxml._elementpath", "lxml.etree",\
                "gzip", "encodings.cp949", "encodings.utf_8", "encodings.ascii", "PIL", "zlib"]
    excludes = []
    packages = ["pptx", "PIL"]
    zip_includes = [("C:/Users/Aegim/Dropbox/Moi/Programmation/Python/00_Compilation/templates/default.pptx",\
                     "pptx/templates/default.pptx")]
    includefiles = ["PIL", "pptx", "KaemmererLogo.gif", "IcoKAG.ico", "modell_211.gif", "modell_111.gif", "titel_111.gif", "titel_211.gif", "Funktion_pdf.py"]
     
    # "path": path,
    buildOptions = {"includes": includes,
               "excludes": excludes,
               "packages": packages,
               "zip_includes": zip_includes,
               "include_files":includefiles
               }
     
    #############################################################################
    # preparation des cibles
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"
     
    if sys.platform == "win32":
        buildOptions["include_msvcr"] = True
     
    cible_1 = Executable(
        script = "pdf2pptx_01-2.py",
        base = base,
        compress = True,
        icon = None,
        )
     
    #############################################################################
    # creation du setup
    setup(
        name = "pdf2pptx_01",
        version = "1.2",
        description = "pdf2pptx_01",
        author = "Aegim",
        options = {"build_exe": buildOptions},
        executables = [cible_1]
        )

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    Bon, en fait c'était un pebcak ... Le type chez qui mon programme ne marchait pas essayait de lancer le .exe depuis le zip, sans dezipper le dossier contenant le programme -_-

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

    Ouf... Je préfère ça. J'ai cru que tu avais trouvé un bug.
    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

  6. #6
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Bonjours les Pythons freezer,
    désolé de m'incruster dans votre discussion mais je n'ai pût résister:
    tyrtamos:
    Ouf... Je préfère ça. J'ai cru que tu avais trouvé un bug.
    J'ai utiliser la recette de tyrtamos adapter au programme que je voulait freezer et j'utilise
    Tkinter comme GUI.
    Et il s'avère que la ligne de code qui est dans une boucle itérant sur le contenus d'un widget Text():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for v in in Text().get(0.0, END) : # pseudo code
      char=v.encode("utf-8")
      #...
    fonctionne parfaitement quand on lance le programme avec l'interpréteur mais une fois freezer j'ai un traceback qui m'indique que python ne reconnais pas l'encodage "utf-8", bref j'ai tenter de changer la chaîne en:
    "UTF-8","utf8" ou encore "UTF8"... et j'ai même essayer d'utilser le module codecs mais j'obtiens toujours le même traceback.
    Bizarre non ?
    Ca se corse quand je change la ligne en :
    Suite a quoi j'arrive a la bizarrerie comme traceback me disant que python ne reconnaît pas l'encodage ascii...

    Bizarre non.

    PS: je n'ai pas le code disponible mais si le bug|problème vous intéresse je serai plus précis la prochaine fois.

    Sur ce, bon python a vous.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

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

    C'est très bizarre, parce que lors du traitement, cx_freeze prend en compte la longue liste des encodages comme (extrait):

    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
    ...
    m encodings.cp1250
    m encodings.cp1251
    m encodings.cp1252
    m encodings.cp1253
    m encodings.cp1254
    m encodings.cp1255
    ...
    m encodings.utf_32
    m encodings.utf_32_be
    m encodings.utf_32_le
    m encodings.utf_7
    m encodings.utf_8
    m encodings.utf_8_sig
    ...
    En lançant le traitement dans une console, regarde si c'est le cas chez toi.
    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

  8. #8
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour la réponse éclairé,
    Je vais rediriger la sortie vers un fichiers voire si il liste les encodage pris en charge.
    J'ai par ailleurs tester la syntaxe "utf_8", sans succès comme vue dans ta sortie de cx_freeze.
    J'ai fait un post à part concernant le problème, pour plus de précisions.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  9. #9
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Points : 14
    Points
    14
    Par défaut zipimporter error au lancement du programme
    Bonsoir, je rencontre la même erreur relévée par Aegim. Je suis sous python 3.2.5 avec QT 4.9 et Cx_freeze 4.3.1. Après avoir rencontré pas mal de problèmes lors de la création de l'exe avec cx_freeze (pb module imp non reconnu à l'exécution, import nécessaire de decimal pour l'utilisation de pyodbc), j'ai enfin réussi à le faire fonctionner.

    J'ai ensuite utilisé inno setup pour le "packager" et le déployer. L'installation se passe bien mais dès que j'essaye de lancer le programme l'erreur 'cannot get zipimporter instance' apparaît.
    J'ai vérifié que je n'utilisais par de zip ou de bz2 dans ces programmes au cas ou, mais je ne pense pas que le problème vienne de là.

    Auriez vous une idée sur le sujet. je suis bloqué à 2 pas de l'arrivée ... Help


    merci d'avance.

  10. #10
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Fichier setup.py correspondant au problème énnoncé ci-dessus
    from cx_Freeze import setup, Executable
    import sys, os

    path = sys.path

    # modules inclusion / exclusion
    includes = ["lxml._elementpath", "decimal", "pyodbc"]
    excludes = ["tkinter", "ttk", "tcl"]
    packages = ["apps", "common", "ui"]

    includefiles = [
    ("conf", "conf"),
    ("doc", "doc"),
    ("res", "res"),
    ("common/structs", "common/structs"),
    ("var", "var"),
    ("README", "README"),
    ]


    binpathincludes = []

    # build options
    options = {"path": path,
    "includes": includes,
    "excludes": excludes,
    "packages": packages,
    "include_files": includefiles,
    "bin_path_includes": binpathincludes
    }

    base = None

    if sys.platform == "win32":
    base = "Win32GUI"


    bubble = Executable(
    script = "bubble.py",
    base = base,
    compress = True,
    icon = 'res/bubble.ico'
    )

    setup(name='bubble',
    version='0.1.3',
    description='Bubble-1.0',
    author='Emmanuel Brunet',
    author_email='emmanuel.brunet@live.fr',
    packages=packages,
    options = {"build_exe": options},
    executables = [bubble]
    )

  11. #11
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Salut jeby6372,

    Je ne m'y connais pas trop avec inno mais il faut faire attention avec le type de compression utiliser dans ton script *.iss

    Sinon pour mettre du code dans ton post il faut utiliser le bouton # qui fait apparaître les balise pour insérer du code python.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  12. #12
    Membre à l'essai
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    merci pour ta réponse rapide Luke_spywoker. J'ai modifié les paramètres (Compression , SolidCompression) de mon script Inno de setup, l'erreur est toujours la même : "cannot get zipimporter instance"

    Le nouveau script Inno :

    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
     
     
    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
     
    #define MyAppName "Bubble"
    #define MyAppVersion "1.0"
    #define MyAppPublisher "Hznteam, Inc."
    #define MyAppURL "http://www.hznteam.fr/bubble"
    #define MyAppExeName "bubble.exe"
     
    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{D53C239F-FA44-4095-A703-15C5E4B554A3}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}\{#MyAppName}
    DefaultGroupName={#MyAppName}
    OutputDir=Z:\transferts\packages
    OutputBaseFilename=setup-bubble
    SetupIconFile=C:\bubble\framework\framework-1.3\build\exe.win32-3.2\res\bubble.ico
    Compression=none
    SolidCompression=no
     
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    Name: "french"; MessagesFile: "compiler:Languages\French.isl"
     
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
     
    [Files]
    Source: "C:\bubble\framework\framework-1.3\build\exe.win32-3.2\bubble.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\bubble\framework\framework-1.3\build\exe.win32-3.2\common\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\bubble\framework\framework-1.3\conf\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\bubble\framework\framework-1.3\build\exe.win32-3.2\doc\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\bubble\framework\framework-1.3\build\exe.win32-3.2\phonon_backend\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\bubble\framework\framework-1.3\build\exe.win32-3.2\res\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    Source: "C:\bubble\framework\framework-1.3\var\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
     
    [Icons]
    Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
    Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
     
    [Run]
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
    Si vous avez une idée du problème ... merci d'avance.

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

Discussions similaires

  1. Cannot get a connection, pool exhausted
    Par questionneuse dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 09/08/2007, 07h31
  2. Cannot get value for expression
    Par MAKNI dans le forum JSF
    Réponses: 9
    Dernier message: 20/02/2007, 11h02
  3. Réponses: 3
    Dernier message: 11/08/2006, 15h00
  4. [VB6>VB.NET] Comment coder "break on all errors"
    Par RiiiDD dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/03/2006, 12h53

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