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 :

problème d'import de fichier python


Sujet :

Python

  1. #1
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut problème d'import de fichier python
    Bonjour,
    Je suis en linux et python 2.7.
    Lorsque je fais l'import d'un fichier python en tête de fichier j'ai une erreur : "ImportError: cannot import name DataBase__" qui n'a, semble t'il rien à voir, avec l'import en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from DataInterface.context import Context__
    from Business.domaindesc import GetPanelNames
     
    class DataBase__:
    	def __init__(self):
    		self.l_panel_names = GetPanelNames()
    ...
    Par contre si je déplace cet import dans la procédure __init__du même fichier, je n'ai pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from DataInterface.context import Context__
     
    class DataBase__:
    	def __init__(self):
                    from Business.domaindesc import GetPanelNames
    		self.l_panel_names = GetPanelNames()
    ...
    Y a t'il une explication ?
    Merci

  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,
    Citation Envoyé par awalter1 Voir le message
    Y a t'il une explication ?
    Ca peut arriver si Business.domaindesc effectue un import du module courant, i.e. on se retrouve avec un import circulaire. En déplaçant, l'import dans __init__, vous supprimez l'import circulaire.

    Etes vous dans ce cas là?

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

  3. #3
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Ah oui, c'est fort possible. C'est pas forcément facile à détecter. Y a t'il une astuce pour l'éviter ? En C on ajoute des directives de précompilation qui évite d'importer un fichier déjà importé.
    Merci

  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
    Salut,
    Citation Envoyé par awalter1 Voir le message
    Ah oui, c'est fort possible. C'est pas forcément facile à détecter.
    Le message d'erreur est pourtant explicite lorsqu'on s'est déjà pris les pieds dedans.

    Y a t'il une astuce pour l'éviter ? En C on ajoute des directives de précompilation qui évite d'importer un fichier déjà importé.
    Eviter les imports circulaires!
    Je reconnais que c'est plus facile à dire qu'à faire mais:
    1. Faites faire le boulot par l'appelant.
    Dans votre code, çà donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class DataBase__:
    	def __init__(self, panels_names):
    		self.l_panel_names = panels_names
    En fait, contrairement à C, pas besoin de savoir quel objet sera "panels_names", vous avez juste besoin de coder les bons noms des attributs/méthodes qui seront appelés. C'est l’interpréteur qui se chargera de...

    2. Préférez "import Business.domaindesc" à "from Business.domaindesc import GetPanelNames"
    Dans votre code, çà donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import Business.domaindesc as xx
    class DataBase__:
    	def __init__(self):
    		self.l_panel_names = xx.GetPanelNames()
    tant que xx.qqc n'est pas dans le corps du script (ici dans le corps d'une fonction) pas besoin d'accéder à l'objet récupéré.

    3. Déplacer le "from Business.domaindesc import GetPanelNames" à la fin du script.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Merci de ces infos que je vais tenter de mettre en pratique.

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

Discussions similaires

  1. (SQL Server Express 2008) Problème d'import de fichier texte
    Par Lioban dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/10/2009, 15h53
  2. Problème d'import de fichier texte: troncature!
    Par ted the Ors dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/06/2009, 14h58
  3. Problème d'import de fichier texte distant
    Par ouss dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2007, 20h24
  4. Problème d'importation depuis fichier xls.
    Par penchu dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/05/2007, 11h42
  5. Problème d'importation de fichier excel
    Par couanp dans le forum MATLAB
    Réponses: 7
    Dernier message: 30/04/2007, 11h49

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