1. ホーム
  2. python

非同期タスクを含むDjangoプロジェクトで、ImportError.が表示されました。celery_tasks' という名前のモジュールがありません。

2022-02-07 02:49:12

今日、QQログインに関わるDjangoプロジェクトを書いていたら、QQログインのIDを記録するテーブルを作成する必要がありました。データベースの移行を行ったところ、エラーが発生し、以下がそのエラーメッセージです。

トレースバック (最新の呼び出し)。
  ファイル "manage.py", 行 22, in <module>
    コマンドラインから実行(sys.argv)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/__init__.py", 行 364, in execute_from_command_line(sys.argv) from_command_line
    ユーティリティ.execute()
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/__init__.py", 行 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/base.py", 行 283, in run_from_argv argv
    self.execute(*args, **cmd_options)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/base.py", ライン 327, in execute
    self.check()
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/base.py", 行 359, in check
    include_deployment_checks=include_deployment_checksです。
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/management/base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/checks/registry.py", 行 81, in run_checks
    new_errors = check(app_configs=app_configs)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/checks/urls.py", 行 16, in check_url_config
    return check_resolver(リゾルバ)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/core/checks/urls.py", 行 26, in check_resolver
    return check_method()
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/urls/resolvers.py", 行 254, in check
    for pattern in self.url_patterns:
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/utils/functional.py", 行 35, in __get__.
    res = instance.__dict__[self.name] = self.func(インスタンス)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/urls/resolvers.py", 行 405, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/utils/functional.py", 行 35, in __get__.
    res = instance.__dict__[self.name] = self.func(インスタンス)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/urls/resolvers.py", 行 398, in urlconf_module
    return import_module(self.urlconf_name)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/importlib/__init__.py", 行 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  ファイル "<frozen importlib._bootstrap>", 行 986, in _gcd_import
  ファイル "<frozen importlib._bootstrap>", 行 969, in _find_and_load
  ファイル "<frozen importlib._bootstrap>", 行 958, in _find_and_load_unlocked
  ファイル "<frozen importlib._bootstrap>", 行 673, in _load_unlocked
  ファイル "<frozen importlib._bootstrap_external>", 行 665, in exec_module
  ファイル "<frozen importlib._bootstrap>", 行 222, in _call_with_frames_removed
  ファイル "/home/python/Desktop/meiduo_mall/meiduo_mall/urls.py", 行 22, in <module>
    url(r'^',include('verifications.urls')),
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/site-packages/django/conf/urls/__init__.py", 行 50, in include
    urlconf_module = import_module(urlconf_module)
  ファイル "/home/python/.virtualenvs/meiduo/lib/python3.5/importlib/__init__.py", 行 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  ファイル "<frozen importlib._bootstrap>", 行 986, in _gcd_import
  ファイル "<frozen importlib._bootstrap>", 行 969, in _find_and_load
  ファイル "<frozen importlib._bootstrap>", 行 958, in _find_and_load_unlocked
  ファイル "<frozen importlib._bootstrap>", 行 673, in _load_unlocked
  ファイル "<frozen importlib._bootstrap_external>", 行 665, in exec_module
  ファイル "<frozen importlib._bootstrap>", 行 222, in _call_with_frames_removed
  ファイル "/home/python/Desktop/project/apps/verifications/urls.py", 行 3, in <module>.py"/home/python/Desktop/project/apps/verifications/urls.py", 行 3, in <module>
    from .import views
  ファイル "/home/python/Desktop/project/apps/verifications/views.py", 行 14, in <module>
    from celery_tasks.sms.tasks import send_sms_code
ImportError: celery_tasks'という名前のモジュールはありません。

celery_tasks'という名前のモジュールがありません。おそらくそのようなモジュールがないことを意味しますが、なぜこのエラーが報告されるのでしょうか?

最も簡単な解決策は、設定ファイルの設定からパッケージのパスを見つけることです。

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

この行と下のprint(sys.path)を見つけて、パッケージのパスがそこにあるかどうかを確認し、なければcelery_tasksにパスを追加します。

私の celery_tasks ファイルは

ホーム/python/Desktop/project の下にあるので、setting.py に2行のコードを追加しただけです。

import sys 
CELERY_DIR = '/home/python/Desktop/project'

sys.path.insert(0,CELERY_DIR)