este es el código que estoy ejecutando:

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()

cuando ejecuto el código de arriba me da el siguiente error:

   ImportError: cannot import name Celery
  • ¿Nombre de tu script como celery.py?
  • sí que lo hice.
  • publica tu celery.py . Dudo que usted define class Celery(object):
  • A continuación, cambie el nombre a otra, decir celery_test.py.
  • al mover el archivo a otra carpeta ,el programa se ejecutó,….no sé por qué…
  • ¿Usted tiene un __init__.py en la carpeta antigua? Tal vez por eso?

InformationsquelleAutor amit_183 | 2013-10-30

3 Comentarios

  1. 32

    Me encontré con este mismo error y cambiar el nombre del archivo se corrigió.

    Para cualquier otra persona que se encuentre en este, la razón por la que usted consigue este tema, tu local celery.py es llegar importados en lugar de la real apio paquete, por lo tanto la razón de python no puede encontrar el Apio («C» mayúscula), como en la clase dentro del paquete de apio, pero no se entera de apio(en minúsculas «c»), que es tu local celery.py que no tiene el Apio clase definida dentro de ella.

    Me ha cambiado el nombre de mi local celery.py a _celery.py pero ningún otro nombre que celery.py debe resolver el problema.

    Editar:
    Yo también mencionar que llamar al apio demonio fuera del directorio de la celery.py el archivo se encuentra en funcionará así. Para propósitos de prueba de cambiar el nombre del archivo será suficiente, pero todavía se puede utilizar celery.py como su nombre local. Por ejemplo, dada la siguiente estructura de carpetas:

    + root/
    - proj/
    * celery.py 
    * tasks.py

    Si usted llama apio desde la carpeta raíz, usted debería ser capaz de escribir:

    celery worker --app=proj [optional args]

    Puede verificar sus tareas están presentes utilizando la opción «-l» información de registro opcional argumento y la visualización de la [tareas] listado directamente debajo de la introducción de datos.

    Más información en el tutorial docs aquí: http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#about-the-app-argument

    • También, después de cambiar el nombre o mover el archivo, recuerde rm *.pyc como Python va a continuar para cargar el mal apio módulo desde el apio.pyc archivo.
  2. 1

    Tuve este problema junto con pycharm y unittests, y desea agregar un adicional de respuesta. Yo lo he probado con python 3, pero suponer que el mismo pasa si uso from __future__ import absolute_import con versiones anteriores.

    La causa raíz se describe en el pycharm informe de error https://youtrack.jetbrains.com/issue/PY-15889

    Resumen: Si ejecuta unittests en pycharm, siempre se añade a la carpeta que contiene la secuencia de comandos de prueba para la principio de sys.path. Si su celery.py está en el mismo camino, python intentará cargar la primera vez.

    Lugar de cambiar los nombres de archivo que he resuelto esto mediante la eliminación de esta carpeta de sys.path antes de importar celery.py en mi ..._Test.py secuencias de comandos de prueba.

    # If running in pycharm, pycharm always adds the current path to the beginning (!) of sys.path
    # I have not found a setting to fix this - so I just remove the path again
    # This block can be removed once https://youtrack.jetbrains.com/issue/PY-15889 if fixed
    import sys
    import os
    sys.path.remove(os.path.dirname(__file__)) 
    
    import celery
  3. 0

    Para aquellos que todavía están encontrando este error, incluso después de cambiar el nombre de tu celery.py archivo dentro de su directorio de proyecto, basta con borrar el celery.pyc archivo.

Dejar respuesta

Please enter your comment!
Please enter your name here