微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在将 django_celery_beat 安装到我的虚拟环境并将其放入 INSTALLED_APPS 后,我会收到“没有名为 'django_celery_beat' 的模块”?

如何解决为什么在将 django_celery_beat 安装到我的虚拟环境并将其放入 INSTALLED_APPS 后,我会收到“没有名为 'django_celery_beat' 的模块”?

我正在处理一个 Django 项目,需要定期运行 cron 任务来检查和删除所有过时的文件。我用 django_extensions 和 crontab 尝试了同样的方法,但我一直收到同样的错误。在 settings.py 中,我有

INSTALLED_APPS = [
    'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','Data_Science_Web_App','django_celery_beat',]

在我的 INSTALLED_APPS 部分。 'Data_Science_Web_App' 是我的应用程序的名称。当我使用 pip3 install django_celery_beat 时,它运行良好。但是,当我尝试迁移更改时,我收到以下消息:

(djangoenv) Daeyongs-Air:Data_Science_Project daeyong$ python3 manage.py migrate
Traceback (most recent call last):
  File "manage.py",line 21,in <module>
    main()
  File "manage.py",line 17,in main
    execute_from_command_line(sys.argv)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site- 
  packages/django/core/management/__init__.py",line 401,in execute_from_command_line
    utility.execute()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site- 
  packages/django/core/management/__init__.py",line 377,in execute
    django.setup()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site- 
  packages/django/__init__.py",line 24,in setup
    apps.populate(settings.INSTALLED_APPS)

  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site- 
  packages/django/apps/registry.py",line 91,in populate
    app_config = AppConfig.create(entry)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site- 
  packages/django/apps/config.py",line 90,in create
    module = import_module(entry)
  File 
  "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/importlib/__init__.py",line 127,in import_module
    return _bootstrap._gcd_import(name[level:],package,level)
  File "<frozen importlib._bootstrap>",line 1014,in _gcd_import
  File "<frozen importlib._bootstrap>",line 991,in _find_and_load
  File "<frozen importlib._bootstrap>",line 973,in _find_and_load_unlocked
  ModuleNotFoundError: No module named 'django_celery_beat'

当我使用 pip freeze 检查时,很明显 django_celery_beat 在那里:

(djangoenv) Daeyongs-Air:Data_Science_Project daeyong$ pip freeze
amqp==5.0.2
asgiref==3.2.10
billiard==3.6.3.0
celery==5.0.5
certifi==2020.6.20
cffi==1.14.2
click==7.1.2
click-didyoumean==0.0.3
click-plugins==1.1.1
click-repl==0.1.6
cycler==0.10.0
Django==3.1.4
django-braces==1.14.0
django-celery-beat==2.1.0
django-common-helpers==0.9.2
django-cron==0.5.1
django-crontab==0.7.1
django-debug-toolbar==2.2
django-timezone-field==4.1.1

...而且这个列表还在继续。

有人可以帮我发现这背后的问题吗?谢谢!

解决方法

django_celery_beat 必须在 INSTALLED_APPS 中的 Data_Science_Web_App 之前

INSTALLED_APPS = [
    'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django_celery_beat','Data_Science_Web_App',]
,

我也遇到过这个。 即使还没有解决这个问题,我发现它应该是版本或包冲突。 我试过了,但没有找到它们的兼容版本(django celery celery-beat-beat,也许等等)

然后我从 INSTALLED_APPS 中丢弃了 'django_celery_beat'。 无论如何,它有效。

如果您有更好的解决方案,请告诉我们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。