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

PyQt Python Discussion :

PyQt et cx_freeze


Sujet :

PyQt Python

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Points : 321
    Points
    321
    Par défaut PyQt et cx_freeze
    Bonjour à tous,

    Je rencontre un problème agaçant en tentant de figer mon code python + pyqt
    au moyen de cx_freeze.

    Voici le programme :
    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
     
    # -*- coding:UTF-8
    #!/usr/bin/python
     
    import sys
    from PyQt4 import QtGui, QtCore
     
    ## Création de la fenêtre principale.
    class Frame(QtGui.QWidget):
        def __init__(self, parent=None):
            QtGui.QWidget.__init__(self, parent)
            self.resize(600,500)
     
            self.button = QtGui.QPushButton ("Hello", self)
            ## Création de l'objet self.animate issu de QPropertyAnimation.
            ## Nous passons en argument le widget qui sera à animer et la propriété que nous allons animer
            self.animate = QtCore.QPropertyAnimation(self.button, "geometry")
            ## Nous rentrons le délai de l'animation en ms
            self.animate.setDuration(800)
            ## Nous indiquons les propriétés de départ
            self.animate.setStartValue(QtCore.QRect(0, 0, 100, 30))
            ## Puis les propriétés de fin
            self.animate.setEndValue(QtCore.QRect(250, 250, 300, 30))
            ## Et enfin nous démarrons l'animation
            self.animate.start()
     
     
    app = QtGui.QApplication(sys.argv)
    frame = Frame()
    frame.show()
    sys.exit(app.exec_())
    (extrait d'un tutoriel)

    et voici le script de 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    #!/usr/bin/env python
    # -*- coding:UTF-8  -*-
     
    import sys, os
    from cx_Freeze import setup, Executable
     
    # Searh path
    path = sys.path + ['p:/python/shared']
     
    # options d'inclusion/exclusion des modules
    includes = [
        "sip"]
    excludes = []
    packages = []
     
    includefiles = []
    # inclusion éventuelle de bibliothèques supplémentaires
    binpathincludes = []
    options = {"path": path,
               "includes": includes,
               "excludes": excludes,
               "packages": packages,
               "include_files": includefiles,
               "bin_path_includes": binpathincludes
               }
    #############################################################################
    # préparation des cibles
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"
     
    cible_1 = Executable(
        script = "anim.py",
        base = base,
        compress = True,
        icon = None,
        )
    #############################################################################
     
    # setup
     
    setup(
        name = "Animations",
        version = "1",
        description = "Essais d'animations",
        author='Cha',
        options={"build_exe":options},
        executables=[cible_1]
    )
    Ma version de python est 4.7.2, celle de cx_freeze est 4.2.3

    Sur un machine, j'ai installé pyqt 4.8.3. Là, quand je gèle mon code, tout se passe bien et j'ai un exécutable fonctionnel.

    Sur une autre machine, j'ai installé pyqt 4.8.6. Et c'est ici que les problèmes commencent. Il n'y a aucun message particulier à la compilation mais à l'exécution, je rencontre l'erreur suivante

    ImportError : No module named atexit

    C'est bizarre cette différence de comportement entre les deux. D'après les numéro de version, il ne s'agirait que de différences mineures.

    Évidemment, je n'ai plus pyqt 4.8.3.

    Ma question est de savoir si vous n'avez déjà rencontré ce problème et surtout comment le résoudre ?

    Merci d'avance pour vos réponses

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

    Essaie d'ajouter le module "atexit" dans le setup, ce qui ferait avec le tien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    includes = ["sip", "atexit"]
    Ce cx_freeze fait des choses compliquées, et de temps en temps, il faut lui ajouter des infos comme cela. Quelquefois, c'est dans le code qu'il faut ajouter l'importation de modules supplémentaires qui sont sous-entendus par Python mais pas par cx_freeze.
    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 averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Points : 321
    Points
    321
    Par défaut Merci
    Bonjour,

    Merci bien pour le conseil. Ainsi, cela marche au poil.

    A bientôt

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

Discussions similaires

  1. cx_Freeze, PyQt et matplotlib
    Par chticricri dans le forum Déploiement/Installation
    Réponses: 2
    Dernier message: 30/01/2013, 14h46
  2. [cx_freeze] Application PyQt qui perd son icône ?
    Par Darel dans le forum Déploiement/Installation
    Réponses: 2
    Dernier message: 09/08/2011, 19h09
  3. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  4. [PyQt] Qt Designer et Qpixmap
    Par parp1 dans le forum PyQt
    Réponses: 2
    Dernier message: 17/06/2005, 12h04
  5. [PyQt] QImage
    Par Jbx 2.0b dans le forum PyQt
    Réponses: 1
    Dernier message: 01/02/2005, 23h06

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