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 :

Faire un executable avec cx_Freeze pour déterminer l'ensemble des parties de E ?


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut Faire un executable avec cx_Freeze pour déterminer l'ensemble des parties de E ?
    Bonjour,

    Voila, j'ai fait un script pour déterminer l'ensemble des parties d'un ensemble E.

    Je voudrais transformer ce script python en exécutable avec cx_Freeze sachant que je suis sous Python 3.2.1, mais malgré la lecture assidue de nombreux tutoriels sur le sujet je n'y arrive pas.

    Lorsque je lance la commande sous "cmd" de Windoxs : "c:\Python32\python.exe .\setup.py build", j'obtiens systématiquement le message d'erreur "[Errno 2] No such file or directory".

    Pourtant, j'ai bien vérifié que mes fichiers "setup.py" et "Partiesensemble" se trouvaient effectivement dans le sous répertoire c:\Python32.

    L'un d'entre vous aurait-il une idée pour me sortir de cette impasse ?


    Voici le script du fichier "setup.py"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    """Fichier d'installation de notre script salut.py."""
     
    from cx_Freeze import setup, Executable
     
    # On appelle la fonction setup
    setup(
        name = "salut",
        version = "0.1",
        description = "Ce programme vous dit bonjour", executables = [Executable("Partiesensemble.py")],)
    Ici, le script de "Partiesensemble" :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    # Détermination de toutes les parties d'un ensemble
     
    from tkinter import *        
     
     
     
    # Renvoi la position du 1er g-uplet
    # la position commence à 0 (et non à 1)
    def Min_sous_ensemble(M, g) :
     
        for i in range(len(M)) :
            if len(M[i]) == g :
                return i
     
    # Renvoi la position du dernier g-uplet
    # la position commence à 0 (et non à 1)
    def Max_sous_ensemble(M, g) :
     
        Indice = 0
     
        if Min_sous_ensemble(M, g) != None :
            for i in range(len(M)) :
                if len(M[i]) == g :
                    Indice = i
            return Indice
     
     
    # On supprime les solutions "non uniques"
    def Nettoyage(N):
     
        Tablo = []
        TabloBis = []
    ##    indx = 0
     
        # On utilise un 'Tablo' intermédiaire
        for i in range(0, len(N)) :
            Tablo.append( N[i])
     
        # On range chaque n-uplet par ordre croissant
        # pour pouvoir les comparer 2 à 2
        for i in range(len(Tablo)) :
            try :
                Tablo[i].sort(key=float)
            except :
                Tablo[i].sort()
     
        # On repère les n-uplets "identiques" à d'autres n-uplets
        # en les mettant dans "Indice_suppression[]" ...
        Indice_suppression = []
        for i in range(len(Tablo)) :
            for j in range(i+1, len(Tablo)) :
                if Tablo[i] == Tablo[j] :
                    Indice_suppression.append(j)
        try :
            Indice_suppression.sort(key=float)
        except :
            Indice_suppression.sort()
     
        # ... et on ne recopie que les solutions "uniques"
        TabloBis = []
        for i in range(len(Tablo)) :
            if not(i in Indice_suppression) :
                TabloBis.append(Tablo[i])
        Tablo = []
        Tablo = TabloBis
     
        # On repère les n-uplet contenant au moins 2 fois le même élément
        #en les mettant dans "Indice_suppression[]" ...
        Indice_suppression = []
        TabloBis = []
        k = -1
        for i in range(len(Tablo)) :
            for j in range(len(Tablo[i])) :
                if (Tablo[i].count(Tablo[i][j]) > 1) and (k != i) :
                    Indice_suppression.append(i)
                    k = i
        try :
            Indice_suppression.sort(key=float)
        except :
            Indice_suppression.sort()
     
        # ... et on ne recopie que les solutions "uniques"
        for i in range(len(Tablo)) :
            if not(i in Indice_suppression) :
                TabloBis.append(Tablo[i])
        Tablo = []
        Tablo = TabloBis
     
        return Tablo
     
     
    def Partitionage (minG, maxG):
     
        global M, Max, Min
     
        N = []
        # On met dans "N[]" toutes les solutions
        for i in range(TailleG) :
            for j in range(minG,maxG) :
                tempo = M[i] + M[j]
                N.append(tempo)
     
        # puis on enlève toutes les solutions "incorrectes"
        TabloBis = []
        TabloBis = Nettoyage(N)
        M = M + TabloBis
     
     
    def Somme(Ensemble) :
     
        somme = 0
        for i in range(len(Ensemble)) :
            somme = somme + float(Ensemble[i])
        return somme
     
    #  ------------------------------------------------------------------------------
     
    M = []    # les M[i] contiennent l'ensemble des solutions
    N = []
     
    Valeurs = input('Entrez les nombres (séparateur = "espace") : ').split()
    TailleG = len(Valeurs)   # taille du groupement : 1 --> MaxG
     
    # on stocke les valeurs d'origine dans "la liste de liste" M --------------------
    for i in range(len(Valeurs)) :
        M.append([Valeurs[i]])
    print(M)
     
    # On cherche les solutions pour chaque taille de Groupement ---------------------
    for G in range(2, TailleG+1) :
        minG = Min_sous_ensemble(M, G-1)    # indice du 1er sous-ensemble contenat G-1 éléments
        maxG = Max_sous_ensemble(M, G-1)+1   # indice du dernier sous-ensemble contenat G-1 éléments
        Partitionage(minG, maxG)
     
     
    # On affiche l'ensemble des parties trouvées -------------------------------------
    print('')
    nb = '(2^' + str(TailleG) + ') :'
    print('Il y a', str(len(M)+1), 'solutions', nb )
    print('')
        # Affichage de l'ensemble vide
    print('1) ['']  (ensemble vide)')
        # Affichage des résultats (non vide)
    for i in range(len(M)) :
        nb = str(i+2) + ')'
        print(nb, M[i])
    ainsi que le script pour déterminer les parties d'un ensemble (fixé) donnant les différentes sommes possibles, et que je souhaiterais également convertir en exécutable :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    # Détermination de toutes les parties d'un ensemble
     
    from tkinter import *        
     
     
     
    # Renvoi la position du 1er g-uplet
    # la position commence à 0 (et non à 1)
    def Min_sous_ensemble(M, g) :
     
        for i in range(len(M)) :
            if len(M[i]) == g :
                return i
     
    # Renvoi la position du dernier g-uplet
    # la position commence à 0 (et non à 1)
    def Max_sous_ensemble(M, g) :
     
        Indice = 0
     
        if Min_sous_ensemble(M, g) != None :
            for i in range(len(M)) :
                if len(M[i]) == g :
                    Indice = i
            return Indice
     
     
    # On supprime les solutions "non uniques"
    def Nettoyage(N):
     
        Tablo = []
        TabloBis = []
    ##    indx = 0
     
        # On utilise un 'Tablo' intermédiaire
        for i in range(0, len(N)) :
            Tablo.append( N[i])
     
        # On range chaque n-uplet par ordre croissant
        # pour pouvoir les comparer 2 à 2
        for i in range(len(Tablo)) :
            Tablo[i].sort(key=float)
     
        # On repère les n-uplets "identiques" à d'autres n-uplets
        # en les mettant dans "Indice_suppression[]" ...
        Indice_suppression = []
        for i in range(len(Tablo)) :
            for j in range(i+1, len(Tablo)) :
                if Tablo[i] == Tablo[j] :
                    Indice_suppression.append(j)
        Indice_suppression.sort(key=float)
     
        # ... et on ne recopie que les solutions "uniques"
        TabloBis = []
        for i in range(len(Tablo)) :
            if not(i in Indice_suppression) :
                TabloBis.append(Tablo[i])
        Tablo = []
        Tablo = TabloBis
     
        # On repère les n-uplet contenant au moins 2 fois le même élément
        #en les mettant dans "Indice_suppression[]" ...
        Indice_suppression = []
        TabloBis = []
        k = -1
        for i in range(len(Tablo)) :
            for j in range(len(Tablo[i])) :
                if (Tablo[i].count(Tablo[i][j]) > 1) and (k != i) :
                    Indice_suppression.append(i)
                    k = i
        Indice_suppression.sort(key=float)
     
        # ... et on ne recopie que les solutions "uniques"
        for i in range(len(Tablo)) :
            if not(i in Indice_suppression) :
                TabloBis.append(Tablo[i])
        Tablo = []
        Tablo = TabloBis
     
        return Tablo
     
     
    def Partitionage (minG, maxG):
     
        global M, Max, Min
     
        N = []
        # On met dans "N[]" toutes les solutions
        for i in range(TailleG) :
            for j in range(minG,maxG) :
                tempo = M[i] + M[j]
                N.append(tempo)
     
        # puis on enlève toutes les solutions "incorrectes"
        TabloBis = []
        TabloBis = Nettoyage(N)
        M = M + TabloBis
     
     
    def Somme(Ensemble) :
     
        somme = 0
        for i in range(len(Ensemble)) :
            somme = somme + float(Ensemble[i])
        return somme
     
    def Ensemble_des_Sommes(S) :
     
        # On repère les n-uplet contenant au moins 2 fois le même élément
        #en les mettant dans "Indice_suppression[]" ...
        Indice_suppression = []
        for i in range(len(S)) :
            for j in range(i+1, len(S)) :
                if (S[i] == S[j]) :
                    Indice_suppression.append(j)
        Indice_suppression.sort(key=float)
     
        # ... et on ne recopie que les solutions "uniques"
        SBis = []
        for i in range(len(S)) :
            if not(i in Indice_suppression) :
                SBis.append(S[i])
     
        return(SBis)
     
     
     
     
     
    #  ------------------------------------------------------------------------------
     
    M = []    # les M[i] contiennent l'ensemble des solutions
    N = []
     
    Valeurs = input('Entrez les nombres (séparateur = "espace") : ').split()
    ##Valeurs = ['1', '2', '3', '4','5', '6', '7', '8', '9', '10']
    TailleG = len(Valeurs)   # taille du groupement : 1 --> MaxG
     
    # on stocke les valeurs d'origine dans "la liste de liste" M --------------------
    for i in range(len(Valeurs)) :
        M.append([Valeurs[i]])
     
    # On cherche les solutions pour chaque taille de Groupement ---------------------
    for G in range(2, TailleG+1) :
        minG = Min_sous_ensemble(M, G-1)    # indice du 1er sous-ensemble contenat G-1 éléments
        maxG = Max_sous_ensemble(M, G-1)+1   # indice du dernier sous-ensemble contenat G-1 éléments
        Partitionage(minG, maxG)
     
     
    #On affiche l'ensemble des parties trouvées -------------------------------------
    S = []
    print('')
     
    # On récupère l'ensemble des sommes
    for i in range(len(M)) :
        S.append(Somme(M[i]))
    S = Ensemble_des_Sommes(S)
     
    # et on affiche les résultats
    for i in range(len(S)) :
        print('Somme =', S[i], ': ')
        for j in range(len(M)) :
            if Somme(M[j]) == S[i] :
                print('    ', M[j])
        print('')
    En vous remerciant par avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    1. Lorsque vous exécutez un setup.py, le répertoire par défaut doit être celui qui contient "setup.py",
    2. Le répertoire c:\Python32 est réservé à Python. Si vous le cannibalisez avec des fichiers perso. vous serez embêté...
    3. cx_freeze est une amélioration de distutils.

    Essayez d'appliquer 1 et 2.
    Pour (3), à vous de voir... Si 1&2 vous suffisent pour avancer, vous pouvez poursuivre mais considérez que vous avez une dette côté savoir un peu comment fonctionne distutils. Car même pour écrire les docs on évite de répéter.
    Vous avez un tuto. pour distutils sur le wiki Python et toute une partie de la documentation Python qui explique comment distribuer ses modules.

    Bon courage,

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut
    Bonjour wiztricks,

    et merci pour votre réponse.

    Mais si je ne dois pas mettre le fichier "setup.py" dans le répertoire Python32, dans quel répertoire par défaut dois-je le mettre ?

    Concernant les tutos expliquant comment utiliser cx_Cfreeze pour rendre exécutable un script python, j'ai dû en voir une bonne vingtaine durant toute la journée d'hier avant de solliciter votre aide. Mais comme je ne comprends pas le quart des termes employés j'essaie de faire ce que je peux mais quelque chose d'important doit m'échapper.
    En plus, ne comprenant rien à l'anglais, j'utilise la traduction apportée par google. Mais, malgré cela tous les sites disent sensiblement la même chose et bien qu'ayant essayé toutes réponses fournies je retombe toujours sur le même problème.

    En tout cas, merci pour votre aide.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par sancho.poncho Voir le message
    Mais si je ne dois pas mettre le fichier "setup.py" dans le répertoire Python32, dans quel répertoire par défaut dois-je le mettre ?
    Pourquoi ne pas créer un répertoire dans votre répertoire de travail par défaut (home directory)?
    Vous pouvez choisir un autre répertoire.
    Dedans vous créez un répertoire pour votre application "my_app" et vous posez tous les fichiers dedans: setup.py, ...

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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut
    Ca y est, j'ai créé un répertoire "Mes applications" dans "Utilisateurs" et j'y ai mis mes scripts python.

    Et, en faisant un vieux "dir" dans la console "cmd", je me suis aperçu qu'en fait mon fichier "setup.py" s'appelait "setup.py.py" (ce qui n'est pas visible quand on regarde le fichier sur Windows).

    J'ai essayé et le message d'erreur a changé donc je pense que le problème récurent venait du nom (extension) du fichier setup.

    Je vous remercie beaucoup pour votre aide et le temps que vous avez pris à m'aider et je vous souhaite une très bonne soirée wiztricks !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/09/2011, 22h52
  2. faire son design avec gimp pour site joomla
    Par claire34 dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 26/04/2010, 12h47
  3. [E-03] Procédure pour contrôler l'ensemble des objets de type Label
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/03/2009, 09h32
  4. comment fair un executable avec netbeans 5.0?
    Par thenightmare1985 dans le forum NetBeans
    Réponses: 6
    Dernier message: 22/12/2006, 14h42

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