erreur d'importation dans le céleri
c'est le code qui je suis en cours d'exécution:
from __future__ import absolute_import
from celery import Celery
celery1 = Celery('celery',broker='amqp://',backend='amqp://',include=['tasks'])
celery1.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600,
)
if __name__ == '__main__':
celery1.start()
lorsque j'exécute le code ci-dessus, il me donne l'erreur suivante:
ImportError: cannot import name Celery
- Avez-vous le nom de votre script
celery.py
? - oui je l'ai fait.
- publier vos
celery.py
. Je doute que vous avez définiclass Celery(object):
- Puis le renommer à l'autre, dire
celery_test.py
. - par de déplacer le fichier vers un autre dossier ,le programme s'est déroulé,....je ne sais pas pourquoi...
- Avez-vous un
__init__.py
dans l'ancien dossier? Peut-être que c'est pourquoi?
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur cette même erreur et ainsi de renommer le fichier corrigé.
Pour quelqu'un d'autre rencontre ce la raison pour laquelle vous obtenez ce problème, votre local celery.py est d'obtenir importé à la place de l'céleri paquet, d'où la raison de python ne peut pas trouver de Céleri(avec un C majuscule), comme dans la classe au sein de l'céleri paquet, mais il ne trouve de céleri(en minuscules "c"), qui est de votre local celery.py qui n'a pas le Céleri classe définie à l'intérieur de celui-ci.
J'ai juste renommé mon local celery.py pour _celery.py mais d'autres noms que celery.py devrait résoudre le problème.
Edit:
J'ai aussi pour but de mentionner que le fait d'appeler le céleri démon en dehors du répertoire de la celery.py le fichier est situé dans fonctionnera aussi bien. Pour les fins du test de renommer le fichier suffire, mais vous pouvez toujours utiliser celery.py comme votre nom local. Par exemple, étant donné ci-dessous la structure de dossiers:
Si vous appelez de céleri à partir du dossier racine, vous devriez être en mesure de taper:
Vous pouvez vérifier vos tâches sont présents à l'aide de l'option "-l info" journal facultatif argument et l'affichage des [fonctions] inscription directement en dessous de l'intro de données.
Plus d'infos dans le tutoriel docs ici: http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#about-the-app-argument
rm *.pyc
que Python va continuer à charger le mauvais céleri module du céleri.pyc fichier.J'ai eu ce problème avec pycharm et unittests, et souhaitez ajouter une réponse supplémentaire. Je l'ai testé avec python 3, mais à supposer que la même chose se produit si vous utilisez
from __future__ import absolute_import
avec les versions antérieures.La cause racine est décrit dans la pycharm rapport de bug https://youtrack.jetbrains.com/issue/PY-15889
Résumé: Si vous exécutez unittests dans pycharm, il ajoute toujours le dossier contenant le script de test pour la début de
sys.path
. Si votrecelery.py
est dans le même chemin, python va essayer de le charger en premier.Au lieu de changer les noms de fichiers, j'ai résolu ce problème en supprimant ce dossier de
sys.path
avant de les importercelery.py
dans mon..._Test.py
des scripts de test.Pour ceux qui sont encore de rencontrer cette erreur, même après le changement de nom de votre
celery.py
fichier dans votre répertoire de projet, il suffit de supprimer lecelery.pyc
fichier.