芹菜 - 没有名为五的模块

Celery - No module named five

将 celery 和 django-celery 更新到 3.1 后:

$ pip freeze | grep celery
celery==3.1.18
django-celery==3.1.16

我在启动我的服务器时 运行 遇到这个错误:

Traceback (most recent call last):
  File "app/manage.py", line 16, in <module>
    execute_from_command_line(sys.argv)
  [...]
  File "/Users/xxx/.virtualenvs/yyy/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/xxx/.virtualenvs/yyy/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'settings' (Is it on sys.path?): No module named five

使用:

在互联网上找到的一些建议是:

  • 重新安装(因为 celery 和 django-celery 版本不匹配)

  • 升级celery

对我有用的是升级海带:

pip install kombu -U

注意:更新到 celery 3.1 后,支持 django out of the box

您需要根据新的 celery 设置创建一个 celery 应用程序。使用设置在项目文件夹中创建文件 celery.py。

from __future__ import absolute_import

import os
import sys

from celery import Celery


sfile = 'mysettings_file' # override it
os.environ.setdefault('DJANGO_SETTINGS_MODULE', sfile)


from django.conf import settings

project_name = 'referral' # override it

app = Celery(project_name)
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)

在您的 app/tasks.py 中,添加您的任务

from referral import celery_app # substitute your project folder

class MyTask(celery_app.Task):

     pass

然后,使用此应用程序注册您的任务。事实上,如果你想将 celery 与 django 一起使用,你不需要 djcelery,除非你将它用作数据库后端。

  • 我遇到这样的问题...
from kombu.five import PY3, values
ModuleNotFoundError: No module named 'kombu.five'
  • 然后通过

    重新安装芹菜
  • pip install celery

  • 这样我就在我的机器上解决了这个问题:)

vine 的最新版本是 5.0.0,新推送是在 06.09.2020(昨天):),这个版本没有任何 five.py 文件。所以降级vine版本到.

vine==1.3.0

适合我

从版本 5.0.0 开始,celery 不再使用五个或六个。只有 python 3 个。如果你使用最新的 pypi 版本,你就不会面对它。芹菜 3.1.x 和 4.4.x 现在停产了。

我遇到了同样的问题,这是由于我们使用芹菜时依赖kombu和vine。 kombu==5.0.2 和 vine==5.0.0 给 celery==4.4 带来问题.2.

在最新版本的 vine 中,在 celery 包的 five.py 中找不到 vine.five 模块。

  File "/home/vin/test/lib/python3.6/site-packages/celery/five.py", line 7, in <module>
import vine.five

ModuleNotFoundError: 没有名为 'vine.five'

的模块

解决方案: 只需重新安装 celery 包,它将根据其兼容性将 vine 降级到 1.3 并将 kombu 降级到 4.6.11。

pip install celery

我是最新的(kombu==5.2.4,celery==5.2.6),仍然出现这个错误!我想我会分享我的经验。我在这里阅读了答案并尝试将 vine 降级为 1.3.0。但是,这是不可能的,因为 kombu 需要 amqp 最新,而需要 vine 最新!

当我尝试所有这些时,我回到了最新版本,错误神奇地消失了。所以不确定它是什么,但可能是一些人在这里分享的 re-install celery 修复。

但很高兴地报告 kombu==5.2.4, celery==5.2.6, amqp==5.0.9, vine==5.0.0 的最新(2022 年 5 月)组合工作正常!