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

Py2exe Python Discussion :

Utilisation de Py2exe


Sujet :

Py2exe Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut Utilisation de Py2exe
    Je développe un petit client lourd Python avec wx, sous Eclipse (PyDev). En interprété, cela fonctionne très bien, sous Eclipse ou en direct

    Par contre, une fois passé dans la moulinette Py2exe, ça ne marche plus :
    ==> AttributeError : 'module' objecthas no attribute 'toto'.

    J'ai structuré mes modules dans des répertoires et j'ai bien créé les fichiers __init__ pour gérer les imports...

    ????

  2. #2
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Salut,

    Et toto c'est quoi ? Un de tes modules ? Le module principal ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Alors, un peu de détail :

    \workspace (Eclipse)
    \Pyml (mon projet)
    \src (répertoire des sources)
    __init__.py
    pyml.py (mon appli)
    Mainframe.py (fenêtre principale)
    \frame (Package python)
    __init__.py
    intervenants.py (module)
    xxxx.py (module...)

    L'exécution se plante dans le module Mainframe, au niveau du premier import relatif à un de mes package... j'ai essayé d'intervertir le smodules dan sle __init__, c'est toujours sur le premier que ça rate...

    Je vous joint un fichier __init__
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Au niveau de py2exe, pas d'erreurs, de warnings ? Dans le répertoire dist, il y a bien des librairies ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    J'ai réessayé en mettant le fichier setup.py ailleurs (au début, je le mettait dans mon répertoire 'src') et là, ça marche carrément plus du tout. La différence est dans le fichier "library.zip" où je n'ai même plus mon module Mainframe.py (présent avant). De plus, Py2exe me signale qu'il ne les a pas trouvés...

    Ceci n'explique pas mon plantage précédent, mais laisse supposer des contraintes liées au lei de stockage et à l'exécution du setup.py par rapport à l'application à générer. Par extension, n'y-a-t-il pas un truc à faire avec des path, peut-être, en plus des fichier __init__ ?

    Merci de ton aide,

  6. #6
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Le py2exe est lancé depuis Eclipse ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Oh non, depuis une fenêtre MS-DOS, comme c'est dit dans le tutoriel...

    je me positionne dans le répertoire contenant le setup.py et je le lance.

  8. #8
    Membre chevronné Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 407
    Par défaut
    quelle est ta ligne de commande pour l'appeler ?
    qu'est-ce qu'il y'a dans ton setup.py ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Voici mon setup.py :

    [code]
    from distutils.core import setup
    import py2exe

    setup(console=["C:\workspace\PyML\src\pyml.py"])
    [code]

    Quand à ma ligne de commande, c'est celle proposée dans le tutoriel. Je me positionne dans le répertoire du setup, sous MS-DOS, et je lance :

    C:\python25\python.exe setup.py py2exe

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Complément d'information :

    j'installe le fichier setup.py dans le répertoire de mes sources python (\src) et je lance py2exe (scénario le moins pire pour moi aujourd'hui). Je ne détecte aucun message d'alerte lors de la fabrication de la distribution.

    Par contre, je me rends compte que, dans le fichier library.zip :
    - j'ai effectivement le module Mainframe.pyc
    - j'ai autant de répertoires que de packages python (\frame par exemple) avec la bonne arborescence qui va bien
    - mais ces répertoires ne contiennent qu'un unique module compilé, le __init__.pyc..... les autres modules ne sont pas présents.

    A l'exécution, problème sur le premier import rencontré comme je le disait dan smes premiers post.

    Je dois certainement rater quelque d'évident mais quoi...

  11. #11
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Tu utilises quelle version de py2exe ?

    Autre chose, as-tu essayé en ne mettant pas le chemin de ton fichier dans le setup.py ?

    J'avoue que je ne vois pas pourquoi il ne veut pas marcher le bougre. D'un autre côté, tu peux toujours copier tes propres fichiers .pyc dans la librairie...mais bon ça reste du temporaire.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    J'utilise la version 0.6.6 de py2exe

    je suis en python 2.5

    Ce matin, j'ai essayé avec ou sans le chemin complet dans le setup.py puisque j'ai mis ce dernier dans le même répertoire que mon application => marche pas non plus...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut Une solution palliative trouvée...
    En cherchant un peu plus, je viens de me rendre compte qu'il existe une option appelée "includes". Si, dans mon setup.py, je cite les modules importés via cette option, cela semble fonctionner (tests partiel à ce jour).

    Par contre, je ne comprends pas pourquoi py2exe arrive à créer les bons répertoires, à lire et compiler les __init__.py et pas les modules.py pourtant cités dans le __init__.py

    je continue de chercher...

  14. #14
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Meme si cela ne devrait pas être nécessaire, est-ce que le path de ton module principal est dans le PYTHONPATH ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    Heu... je vais passer pour un looser là...

    PYTHONPATH ???

  16. #16
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    Il s'agit d'une variable d'environnement dans laquelle tu mets tous les chemins des modules Python. Dans une fenêtre dos, tapes :

    Et tu vas voir la valeur de cette variable. Tu devrais y voir le répertoire d'installation de Python, etc.

    Juste pour tester, modifies cette variable et ajoute le répertoire où se trouve ton module principal. Toujours dans une fenêtre DOS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set PYTHONPATH = %PYTHONPATH%;TON_REP
    Sans quitter cette fenêtre DOS, lances le py2exe.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    J'ai essayé, mais il m'est répondu que cette variable d'environnement n'existe pas... Quand et comment auraus-je dû la créer ?

    Par ailleurs, py2exe parvient à trouver les fichiers __init__.py dans les sous-répertoires (qu'il a créé) donc, je ne pense pas que ce soit un problème de Path (mais je peux évidemment me tromper : )

    J'ai pu discuter du sujet avec un collègue qui en est arrivé à la même solution que moi : intégrer l'exhaustivité des modules des packages dans l'attribut "includes" de py2exe...

  18. #18
    Membre éclairé Avatar de ctiti60
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Par défaut
    C'est tout de même étrange, car j'ai déjà fait un py2exe avec des sous-modules sans problèmes. Tu as surement raison pour le PythonPath. Pour info, il est utile si par exemple tu veux lancer ton application depuis un autre répertoire ou alors utilisé tes sous-modules dans un auter projet. Il faut dire à Python ou les trouver.

    Dans tes __init__.py, il y a quoi dedans ?
    Il me semble que tu n'es pas obligé de mettre quelque chose dedans, tu peux faire le test pour voir.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut
    J'en ai mis un en pièce jointe plus haut dans la discussion.

    Le problème, c'est que si je ne les remplit pas, je ne peux plus faire des choses du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from frame.util import intervenants
    voir pire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from frame import *
    ce que je trouve utile en raison du grand nombre de modules que je génère (j'essaie d'appliquer la règle : un module = une classe)

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut J'ai trouvé !
    Ca y est, j'ai trouvé...

    py2exe ne semble pas inclure les modules si l'import est du style "from..."

    Il faut coder un import direct. par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import frame.util.intervenants as intervenants
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from frame.util import intervenants
    Il fallait le savoir...

    Merci à tous pour votre aide. Je vais toper la discussion comme résolue si personne ne met de complément d'ici demain.


    question subsidiaire : j'essaie de respecter les règles du forum et donc d'encadrer mon code avec la balise [code] mais, visiblement, ça ne donne pas le résultat attendu... qu'est-ce que je rate ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [py2exe] Utilisation ?
    Par abigaelle dans le forum Py2exe
    Réponses: 7
    Dernier message: 09/05/2006, 10h30
  2. [py2exe] Utilisation de py2exe
    Par Babaôrom dans le forum Py2exe
    Réponses: 8
    Dernier message: 27/02/2006, 21h16
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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