簡體   English   中英

沒有名為“ django.db.backends.mysql.compiler”的模塊

[英]No module named 'django.db.backends.mysql.compiler'

我有一個奇怪的錯誤,因為我們從Django 1.11.5升級到Django 2.1.3(python 3.5.2)。 我們使用MySQL 5.7.24。 安裝的最新軟件包是:

  • Django的mysql的== 2.4.1
  • 的mysql == 1.3.14

我們還使用芹菜:

  • 芹菜== 4.2.1
  • Django的芹菜拍== 1.3.0
  • Django的芹菜結果== 1.0.4

該錯誤僅在我們執行celery任務( perform_display_ads_check )時發生。 如果我們運行不帶.delay()的函數, .delay()

這是此任務的代碼:

@shared_task
def perform_display_ads_check():
    try:
        checker = DisplayAdsCheck()
        checker.check_all()
    except Exception as e:
        logger.exception(str(e))
        message = 'Cannot check display ads. Reason: {}'.format(str(e))
        send_slack_message.delay(message=message)
        raise Reject(requeue=False)

send_slack_message.delay(message=message)可以工作。 此數據庫不涉及任何數據庫。

這是日志:

    [2018-12-05 09:51:47,626: WARNING/ForkPoolWorker-1] Task clients.tasks.display_ads_check.perform_display_ads_check[535c8b34-5cf4-48e0-a16d-a22b5979f38b] reject requeue=False: None
Traceback (most recent call last):
  File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 26, in perform_display_ads_check
    checker.check_all()
  File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 38, in check_all
    clients = self.process()
  File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 81, in process
    for client in clients_qs.iterator():
  File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/models/query.py", line 50, in __iter__
  File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/models/sql/query.py", line 256, in get_compiler
  File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/django/db/backends/base/operations.py", line 316, in compiler
  File "/home/tool/.virtualenvs/tool_py3/lib64/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 985, in _gcd_import
  File "<frozen importlib._bootstrap>", line 968, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
ImportError: No module named 'django.db.backends.mysql.compiler'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/celery/app/trace.py", line 382, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/tool/.virtualenvs/tool_py3/local/lib/python3.5/dist-packages/celery/app/trace.py", line 641, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/tool/www/project/clients/tasks/display_ads_check.py", line 31, in perform_display_ads_check
    raise Reject(requeue=False)
celery.exceptions.Reject: (None, False)

你有什么線索嗎? 有小費嗎? 請指教。

更新#1

我們注意到,它在dist-packages查找文件,但是其中沒有Django包。 Django在site-packages

更新#2

我們終於找到了問題。 解決方案是重新創建虛擬環境。

解決了!

我們終於找到了問題。 解決方案是重新創建虛擬環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM