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 :

packages et acces aux modules


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut packages et acces aux modules
    Bonjour

    Si j'ai une organisation ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    app
     + app.py
     + gui
         + __init__.py
         + main.py (contient la class MainFrame)
         + user.py
    Que mettre dans mon __init__.py afin de de pas avoir à faire gui.main.MainFrame() dans mon app, mais plutôt gui.MainFrame() ?

    Actuellement, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from main import MainFrame
    Mais si j'ai plein de modules dans gui, il faut que je fasse cela pour chaque module...
    Mes essais avec __all__ n'ont pas été fructueux
    Je suis persuadé qu'il y a beaucoup plus simple, mais je n'ai pas trouvé dans la doc python.
    Merci pour votre aide
    --
    Jérémie

  2. #2
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from gui.main import MainFrame

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Autre possibilité, dans ton __init__.py :
    Sinon, pour importer automatiquement une liste de modules, il doit y avoir un moyen avec __import__ de faire une boucle.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from gui.main import MainFrame
    heuuu,

    Ouiménon

    je ne souhaite pas donner la visibilité jusqu'à main.
    Je souhaiterai pouvoir effectuer directement qui correspond plus à conception du produit : donner par le package gui la visibilité sur les classes gui, sans ce soucier de l'implémentation du package (plein de fichiers).
    --
    Jérémie

  5. #5
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from gui import main as gui
    gui.MainFrame

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    J'ai regardé un peu comment faisaient les développeurs des grosses biblios (Numpy, etc), et en général c'est des
    Avec une ligne par module

    GnuVince> Tu pourrais un peu commenter ce que tu donnes, parce que non seulement c'est juste un bout de code (certes très simple) parachuté, mais en plus ce n'est pas ce que voudrait jfouche

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    merci oiffrig

    Je vais donc poursuivre dans cette direction.
    J'avais commencé à regarder comment faisait wxPython, mais le __init__.py est assez complexe (trop vu mon niveau de débutant).

    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
    import __version__
    __version__ = __version__.VERSION_STRING
     
    __all__ = [
        # Sub-packages
        'build',
        ....
        'stc',
        ]
     
    # Load the package namespace with the core classes and such
    from wx._core import *
    del wx
     
    if 'wxMSW' in PlatformInfo:
        __all__ += ['activex']
     
    # Load up __all__ with all the names of items that should appear to be
    # defined in this pacakge so epydoc will document them that way.
    import wx._core
    __docfilter__ = wx._core.__DocFilter(globals())
     
    __all__ += [name for name in dir(wx._core) if not name.startswith('_')]
    Cela confirme ton idée :
    je n'ai juste pas tres bien compris le
    --
    Jérémie

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Le del wx c'est simplement pour éliminer la référence vers wx.wx, qui est sans doute une référence cyclique.

Discussions similaires

  1. Accès aux modules
    Par Perl53 dans le forum Langage
    Réponses: 2
    Dernier message: 23/09/2009, 13h40
  2. Accès aux modules dans arborescence de répertoires
    Par ledannois dans le forum Général Python
    Réponses: 3
    Dernier message: 23/07/2009, 17h21
  3. Acces aux controles d'un form depuis en module
    Par tomkich dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/02/2007, 17h18
  4. [VBA-E]Accès aux modules via VBA
    Par houba95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/03/2006, 22h10
  5. [Facade] [Java] Pattern Facade et accès aux packages
    Par manube dans le forum Design Patterns
    Réponses: 19
    Dernier message: 10/03/2006, 11h12

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