ImportError:芹菜3.1和Python 2.7没有名为芹菜的模块

ImportError:芹菜3.1和Python 2.7没有名为芹菜的模块,python,python-2.7,celery,Python,Python 2.7,Celery,在Windows上使用Python 2.7和芹菜3.1.25,当我们使用 celery -A proj worker -l info 我们得到了错误 ImportError: No module named celery 问题:当我们 将文件名从芹菜.py更改为celeryApp.py 将tasks.py中的导入语句从from.celery import app更改为from celeryApp import app 为什么会这样?我们如何解决这个问题 目录结构 /proj/__init

在Windows上使用Python 2.7和芹菜3.1.25,当我们使用

celery -A proj worker -l info
我们得到了错误

ImportError: No module named celery
问题:当我们

  • 将文件名从
    芹菜.py
    更改为
    celeryApp.py
  • tasks.py
    中的导入语句从
    from.celery import app
    更改为
    from celeryApp import app
为什么会这样?我们如何解决这个问题

目录结构

/proj/__init__.py
/proj/celeryApp.py
/proj/tasks.py
/proj/celeryApp.py

from __future__ import absolute_import, unicode_literals
from celery import Celery

app = Celery('tasks', 
    broker='amqp://jack:jack@192.168.1.26:5672//',
    backend='amqp://',
    include=['proj.tasks'])

if __name__ == '__main__':
    app.start()
from __future__ import absolute_import, unicode_literals
from celeryApp import app

@app.task
def add(x, y):
    return x + y
/proj/tasks.py

from __future__ import absolute_import, unicode_literals
from celery import Celery

app = Celery('tasks', 
    broker='amqp://jack:jack@192.168.1.26:5672//',
    backend='amqp://',
    include=['proj.tasks'])

if __name__ == '__main__':
    app.start()
from __future__ import absolute_import, unicode_literals
from celeryApp import app

@app.task
def add(x, y):
    return x + y

启动芹菜工作程序时,应命名应用程序以匹配配置芹菜模块的python文件。你应该从工作开始

celery worker -l info -A tasks
您不应该将配置文件命名为
芹菜.py
。这将在开始导入时导致问题

from celery import Celery
您的文件应命名为其他名称,但不能命名为
芹菜.py

此外,在您的配置文件中,不需要添加

if __name__ == '__main__':
    app.start()
如果您要显式地包含
proj.tasks
请确保
proj
位于python路径中,或者您可以在使用
tasks
应用程序启动worker时将其删除