ImportError: ne peut pas importer de nom
J'ai deux fichiers app.py
et mod_login.py
app.py
from flask import Flask
from mod_login import mod_login
app = Flask(__name__)
app.config.update(
USERNAME='admin',
PASSWORD='default'
)
mod_login.py
# coding: utf8
from flask import Blueprint, render_template, redirect, session, url_for, request
from functools import wraps
from app import app
mod_login = Blueprint('mod_login', __name__, template_folder='templates')
Et python renvoie cette erreur:
Traceback (most recent call last):
File "app.py", line 2, in <module>
from mod_login import mod_login
File "mod_login.py", line 5, in <module>
from app import app
File "app.py", line 2, in <module>
from mod_login import mod_login
ImportError: cannot import name mod_login
Si je supprime from app import app
, code de travail, mais comment je peux obtenir l'accès à app.config
?
Que faire si vous essayez juste
Double Possible de ImportError: Impossible d'importer nom X
Grâce à cet économiseur d'! Je ne vois pas une référence circulaire, mais a été toujours obtenir l'erreur ci-dessus. À l'aide de
J'ai parlé trop vite. ne vous aide pas. Lorsque j'essaie d'utiliser la classe il ne marche pas à le trouver et donne le message d'erreur d'importation. Je sais qu'il n'est pas circulaire d'importation et ont essayé de la suppression de tous *.pyc fichiers. Ne sais pas ce qu'est manquant
from mod_login import *
et from app import *
Double Possible de ImportError: Impossible d'importer nom X
Grâce à cet économiseur d'! Je ne vois pas une référence circulaire, mais a été toujours obtenir l'erreur ci-dessus. À l'aide de
*
aidé. Je me demande quelle est la logique.J'ai parlé trop vite. ne vous aide pas. Lorsque j'essaie d'utiliser la classe il ne marche pas à le trouver et donne le message d'erreur d'importation. Je sais qu'il n'est pas circulaire d'importation et ont essayé de la suppression de tous *.pyc fichiers. Ne sais pas ce qu'est manquant
OriginalL'auteur Patrick Burns | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous avez une circulaire à l'importation:
dans app.py
dans mod_login.py
Ce n'est pas permise en Python. Voir Circulaire de la dépendance aux importations en Python pour plus d'info. Bref, la solution sont
est-il une autre raison pour laquelle cela peut se produire? "ne peut pas importer de nom X"
Sans le backtrace c'est juste un sauvage deviner...
OriginalL'auteur hivert
Cela peut aussi arriver si vous travaillez sur vos scripts et de fonctions, et ont été les déplacer (c'est à dire changé l'emplacement de la définition) qui pourrait avoir accidentellement créé une boucle de référence.
Vous pouvez constater que la situation est résolu, si vous venez de réinitialiser le iPython kernel pour effacer toutes les anciennes affectations:
ou menu->redémarrer le terminal
Dans mon cas, j'ai refait un simple script python dans les différents modules, laissant un peu de vieux .py et .pyc fichiers, et je suis tombée sur le "ne peut pas importer le nom" erreur. Après une recherche inutile de références circulaires, votre réponse me mettre sur le droit chemin - la suppression des anciens fichiers fait le tour. merci
Je voulais souligner que c'était une bouée de sauvetage. Je n'ai pas de référence circulaire, et était complètement confus quant à pourquoi ce qui se passait.
OriginalL'auteur mjp
Au lieu d'utiliser les locaux des importations, vous pouvez importer la totalité d'un module à la place de l'objet particulier. Puis, dans votre
app
module, appelmod_login.mod_login
app.py
mod_login.py
OriginalL'auteur Jivan
Similaire à @mjp réponse, mon problème a été résolu après la suppression de tous .pyc fichiers.
OriginalL'auteur Zachary Ryan Smith
Quand c'est dans une console python si vous mettez à jour un module pour être en mesure de l'utiliser par le biais de la console ne dispose pas de l'aide de réinitialisation, vous devez utiliser un
et
de nature à résoudre votre problème
OriginalL'auteur Talles .Carvalho