【问题标题】:No module named 'allauth.account.context_processors'没有名为“allauth.account.context_processors”的模块
【发布时间】:2026-02-18 19:40:01
【问题描述】:

我想使用 Django-Allauth,所以我安装如下,它在我的笔记本电脑 localhost 中完美运行;但是当我把它拉进我的服务器时,我 遇到以下错误:

No module named 'allauth.account.context_processors'

我该怎么办?

# Django AllAuth
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django
                'django.contrib.auth.context_processors.auth',
                'django.core.context_processors.request',

                # `allauth` specific context processors
                'allauth.account.context_processors.account',
                'allauth.socialaccount.context_processors.socialaccount',
                "django.contrib.auth.context_processors.auth",
                "django.core.context_processors.debug",
                "django.core.context_processors.i18n",
                "django.core.context_processors.media",
                "django.core.context_processors.static",
                "django.core.context_processors.tz",
                "django.core.context_processors.request",
                "moolak.context_processors.image",
            ],
        },
    },
]


AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

SOCIALACCOUNT_QUERY_EMAIL = True

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

SOCIALACCOUNT_PROVIDERS = \
    {'google':
        {'SCOPE': ['profile', 'email'],
         'AUTH_PARAMS': {'access_type': 'online'}}}


SOCIALACCOUNT_PROVIDERS = \
    {'facebook': {'SCOPE': ['email', 'public_profile', 'user_friends'], 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 'METHOD': 'js_sdk', 'VERSION': 'v2.3'}}


# newsletter

NEWSLETTER_DEFAULT_HEADER_SENDER = 'NewsLetter <info@m.com>'

我从未使用过 Django-Alluth,所以我是新手,请尽可能简单地帮助我。

【问题讨论】:

  • 你的问题解决了吗?
  • 不!没解决!
  • 你有运行命令 pip --freeze 吗?在那里面是什么版本的 allauth ?
  • 在我们的项目中,我们也遇到了这个问题,但是当我们转移到所有身份验证的以前版本时,问题就解决了
  • 正如@Andre 所说,您必须为以前的版本执行 pip install django-allauth==0.21.0

标签: python django packages django-allauth django-settings


【解决方案1】:

这个错误意味着找不到模块。

您可能只需要在您的服务器上安装名为 allauth 的第 3 方模块(或将其添加到 requirements.txt,如果您使用 Heroku 等自动部署)。

pip install django-allauth

您可以在本地运行pip freeze 以查看安装了哪些模块。

要安装特定版本的django-allauth,请使用:

pip install django-allauth==0.22.0

【讨论】:

  • 我通过 pip 安装了 allauth!
  • django-allauth==0.22.0
  • 这也是你在服务器上安装的版本吗?您是在 virtualenv 中还是全局安装它?也许服务器使用的环境与您想象的不同,如果它在 virtualenv 中运行,在不同的 Python 版本(例如 2 而不是 3)或您的 PYTHONPATH 损坏时,可能会发生这种情况。
  • 我是通过 virtualenv, python 3.4 安装的
  • 好的,很酷。您确定您的服务器使用的是相同的环境吗?
【解决方案2】:

allauth 0.22.0 有问题,安装 allauth 0.20.0

pip install django-allauth==0.20.0

【讨论】:

  • 我觉得你自己添加了这个答案有点好笑,因为它已经在我的答案以及 cmets 中:) Julen 的答案也很好,因为它增加了一些背景。
【解决方案3】:

这意味着您的开发机器和服务器中有不同版本的 Allauth。您绝对应该在两侧使用相同的版本。

在 django-allauth 的 0.22 版中,您在服务器上遇到问题的原因,context processors have been replaced by template tags

您只需要确保:

  1. 您至少运行的是 Allauth 0.22,这是目前的最新版本 (pip install django-allauth==0.22)
  2. 您的 Django 项目设置中没有列出特定于 Allauth 的上下文处理器。所以你需要删除这两行:
# `allauth` specific context processors
'allauth.account.context_processors.account',
'allauth.socialaccount.context_processors.socialaccount',

【讨论】:

  • 这绝对是答案,它解决了我的问题
  • 如果 allauth 在 INSTALLED_APPS 中,该修复也适用于 No module named context_processors
  • 我有 Django 1.8.2 + django-allauth 0.20.0,它在 2 行中运行良好。但是当升级到 Django 1.9.3 + django-allauth 0.24.1 时,我遇到了“ImportError at /admin/ No module named 'allauth.account.context_processors'”错误。删除这 2 行可以解决问题。
【解决方案4】:

您可以在本地运行 pip freeze 以查看安装了哪些模块。

要安装特定版本的 django-allauth,请使用。它会解决这个问题。

pip install django-allauth==0.22.0

【讨论】: