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 :

Import dans des modules? Comment faire et quelles sont les bonnes pratiques?


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Import dans des modules? Comment faire et quelles sont les bonnes pratiques?
    Bonjour,

    Étant débutant en Python (il fallait bien que je découvre ce sympathique langage depuis le temps qu'on en parle! ), je m’essaie au importation de module et je rencontre un problème...

    Afin d'être le plus compréhensible possible, voici l'exemple concret de mes tests.

    Arborescence des mes fichiers et répertoires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    programme.py
    config.py
    '-- package
        |-- __init__.py
    	|-- UnModule.py
    	'-- conposantsUnModule
    	    |-- __init__.py
    		|-- composant1.py
    		|-- composant2.py
    Le but est de démarrer le programme depuis programme.py. Le problème est que j'ai des import dans dans le fichier UnModule.py (il fonctionne parfaitement s'il est directement exécuté sur IDLE). Lorsque j'exécute le programme.py, j'ai alors l'erreur suivante :
    ImportError: No module named 'composantsUnModule'
    Comment faire pour régler mon problème d'import? Y-a-t-il une bonne pratique à adopter (faire quelque chose en lien avec le PYTHON PATH?)

    Voici le code (très light) des différents fichiers (les fichiers non mentionnés ci-dessous sont vides) :
    programme.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import config
    from package import UnModule
     
    UnModule.maFonction()
    UnModule.py (dans le répertoire package/)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import composantsUnModule.composant1
    import composantsUnModule.composant2
     
    def maFonction():
        print("Je suis dans UnModule")
        composantsUnModule.composant1.maFonction()
        composantsUnModule.composant2.maFonction()
    composants1.py (dans le répertoire package/composantsUnModule/)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def maFonction():
        print("Je suis dans composant1")
    composants2.py (dans le répertoire package/composantsUnModule/)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def maFonction():
        print("Je suis dans composant2")
    Un grand merci d'avance pour vos réponses

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Salut,

    J'ai pas ce qu'il faut sous la main pour essayer et m'assurer de ce que je vais dire, mais sauf erreur de ma part, ton soucis dois se situé au niveau des fichier __init__.py.

    Dans ton programme.py as tu essayé "import package.UnModule" à la place? Cela devrait faire que ton programme fonctionne je pense.

    J'attend ton retour

    Edit: je viens de relire le post (oulà il est tard lol). Je pense que ton probleme est du au fait que tes __init__ sont vides. De fait, importer le module pose probleme car il n'y a pas de lien. Je m'explique, si tu fait un simple "import package", tu n'aura pas acces à tes modules inclus dans ce package. Pour cela, il faudrait faire un "import <mon_module>" dans ton __init__.py.

    Redis moi si je ne suis pas clair.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Normalement ça devrait fonction avec les fichiers __init__.py vides.

    Essaye plutôt ceci:
    UnModule.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from composantsUnModule import composant1
    from composantsUnModule import composant2

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/05/2015, 12h38
  2. Réponses: 33
    Dernier message: 18/04/2009, 12h36
  3. Réponses: 7
    Dernier message: 23/03/2009, 22h38
  4. Quelles sont les bonnes pratiques avec Zend Framework ?
    Par Community Management dans le forum Zend Framework
    Réponses: 14
    Dernier message: 02/02/2009, 20h35
  5. [C#/ASP.Net/DAL] Quelles sont les bonnes pratiques ?
    Par fouhaa dans le forum Accès aux données
    Réponses: 4
    Dernier message: 13/07/2006, 23h54

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