- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试让 Celery 运行 Django,遵循官方文档和位于此处的视频:https://godjango.com/63-deferred-tasks-and-scheduled-jobs-with-celery-31-django-17-and-redis/
我不知道我做错了什么,但这总是会导致 ImportError。
该项目名为“clubmgmt”
“clubmgmt/celery.py”的内容:
from __future__ import absolute_import
import os
import django
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'clubmgmt.settings')
django.setup()
app = Celery('clubmgmt')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
“clubmgmt/__init__.py”的内容
from __future__ import absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from clubmgmt.celery import app as celery_app
任务在名为“activation”的应用中定义
“activation/tasks.py”的内容:
from activation.models import Activation
from django.conf import settings
from django.template.loader import render_to_string
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from clubmgmt.celery import app
__author__ = 'jeroenjacobs'
@app.task
def send_activation_mail(activation_pk):
activation = Activation.objects.get(pk=activation_pk)
mail = activation.user.email
msg = MIMEMultipart('alternative')
msg['Subject'] = "Please activate your account"
msg['From'] = settings.SMTP_SENDER_ADDRESS
msg['To'] = mail
...
我总是收到以下错误:
(clubmgmt) > $ python manage.py runserver [±master ●●●]
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/core/management/__init__.py", line 351, in execute_from_command_line
utility.execute()
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/core/management/__init__.py", line 303, in execute
settings.INSTALLED_APPS
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/Users/jeroenjacobs/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1129, in _exec
File "<frozen importlib._bootstrap>", line 1471, in exec_module
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/clubmgmt/__init__.py", line 5, in <module>
from clubmgmt.celery import app as celery_app
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/clubmgmt/celery.py", line 9, in <module>
django.setup()
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/jeroenjacobs/.pyenv/versions/clubmgmt/lib/python3.4/site-packages/django/apps/registry.py", line 115, in populate
app_config.ready()
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/activation/apps.py", line 10, in ready
import activation.handlers
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/activation/handlers.py", line 6, in <module>
from activation.utils import create_or_update_activation
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/activation/utils.py", line 2, in <module>
from activation.tasks import send_activation_mail
File "/Users/jeroenjacobs/PycharmProjects/clubmgmt/activation/tasks.py", line 7, in <module>
from clubmgmt.celery import app
ImportError: cannot import name 'app'
谁能解释一下为什么“app”无法导入?
顺便说一句:这是在 python 3.4 下测试的。回到 Python 2 不是一种选择,所以请不要建议将其作为解决方案。如果 Celery 与 Python3 不兼容,是否有其他选择?
最佳答案
问题是 clubmgmt.celery.app
尝试导入 clubmgm.celery.app
导致循环导入。
如果你查看你的堆栈跟踪 clubmgmt.__init__
导入 clubmgmt.celery.app
,这反过来使 django
运行它的设置例程这最终触发了 clubmgmt.activation.apps
的导入,它在某个时候通过 clubmgmt.activation.tasks
再次导入 clubmgmt.celery.app
,而它仍在导入,导致 ImportError
。
从 __init__.py
中删除导入肯定会解决问题,但如果你仍然需要它,你可以使用 activation/apps.py
做一些事情> 相反。
到目前为止,我了解到的一件事是,90% 的 ImportError
发生是由于循环导入,另外 10% 是由于拼写错误或类似的原因。
关于python - Django 1.8.5 和 Celery 的 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181468/
如何根据可用性使用有时像这样导入的不同模块运行相同的测试: try: from gevent.local import local except ImportError
我在使用 Nose 运行我的单元测试时遇到了一个ImportError,而当我单独运行它时却没有。此处提及的所有文件均可在 http://gist.github.com/395541# 中查看. 如果
当我在一个Python程序中导入熊猫时,我收到以下错误。这里也是程序:
我想下载Spacy,但终端的打字扩展版本降低了:。接下来,我想安装语言包python-m spacy Download en,但出现另一个错误:。我当前的python版本是3.7,我应该更新它吗?或者
我想下载Spacy,但终端的打字扩展版本降低了:。接下来,我想安装语言包python-m spacy Download en,但出现另一个错误:。我当前的python版本是3.7,我应该更新它吗?或者
Traceback (most recent call last): File "c:\users\sathish.pv\appdata\local\continuum\anaconda3\lib
我已经编写了一个名为coinview.py的脚本,它可以在Linux上运行。当我尝试以SYSTEM D身份运行它时,出现错误。错误:ImportError:没有名为‘Schedule’的模块。。我用的
这是我的错误信息 Traceback (most recent call last): File "app.py", line 9, in from forms import Conta
我正在使用 Mac OS x 10.10.3 Yosemite 和 Python 2.7.9 |Anaconda 2.2.0 (x86_64) 来处理很多 python 的东西。我正在使用 Eclip
我是 Django 新手,正在创建我的第一个项目。一切正常,突然出现 ImportError('win32 only') ImportError: win32.在网上搜索了很多,但没有找到解决方案。
回复 a similar question建议我不能以独立模式导入 Shell 的东西。但是,据我了解,St 是一个用 C 编写的单独库。但我仍然无法在 gjs 中导入它...... IE。 $ gj
好吧,我被这个难住了。我环顾四周,但找不到任何东西,也不知道如何调试它。基本上,python 在我未导入任何内容的代码行中抛出一个 ImportError。我有一个相当大的模块 ICgen,其中包含模
我正在调用 psycopg2 import psycopg2 我得到标准错误 ImportError: No module named psycopg2 我用 macports 安装了我的副本,所以我
我已经使用 brew 安装了 opencv3,但是在执行 import cv2 时遇到了 importError >>> import cv2 Traceback (most recent call
安装numpy表示已经是最新版本,出现在pip list返回的列表中也是,但是导入它会产生导入错误(并且这个问题对于每个其他已安装的模块都存在,例如 scipy、matplotlib)。 系统有什么问
我有一个 python 脚本,运行时会产生以下错误: import urllib2 File "C:\Python27\lib\urllib2.py", line 94, in import htt
我正在尝试运行 this tutorial在合作实验室。 但是,当我尝试导入一堆模块时: import io import torch from torchtext.utils import down
我在这里遇到了一个特别棘手的问题。 我目前正在做一个个人项目,从一个相对简单的 Riot API 包装器开始,一切都运行良好,直到我想打包它并组织模块。这是该项目的链接:Logistic Analys
我已经通过easy_install.py --upgrade google-api-python-client安装了适用于Python的Google API客户端库。当我运行包含from oauth2
我正在使用 Django,并且我的组应用程序不断收到此错误,我检查了所有导入设置,一切都很好。我的注册和个人资料应用程序运行顺利,但为什么这个应用程序给我一个 ImportError 模型? Trac
我是一名优秀的程序员,十分优秀!