模块未命名为“allauth.account.context_processors”

13

我想使用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-Allauth,所以我是新手,请尽可能简单地帮助我。


不!它还没有解决! - Alireza Ghaffari
你运行了命令 pip --freeze 吗?其中 allauth 的版本是多少? - gaurav_kamble
1
在我们的项目中,我们也遇到了这个问题,但是当我们切换到 all auth 的先前版本时,问题得到了解决。 - gaurav_kamble
django-allauth==0.22.0 - Alireza Ghaffari
1
正如@Andre所提到的,您需要执行pip install django-allauth==0.21.0来安装先前版本。 - gaurav_kamble
显示剩余2条评论
4个回答

48
这意味着你的开发机器和服务器上安装的Allauth版本不同。你应该在两端使用相同的版本。
关于你在服务器上遇到的问题,django-allauth 0.22版本中上下文处理器已被模板标记所替代
你只需要确保:
  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',

1
这肯定是答案,它解决了我的问题。 - Juanvulcano
1
如果INSTALLED_APPS中包含了allauth,那么此修复程序也适用于No module named context_processors - Babu
我之前使用的是 Django 1.8.2 + django-allauth 0.20.0,这两行代码运行良好。但当我升级到 Django 1.9.3 + django-allauth 0.24.1 后,出现了 "ImportError at /admin/ No module named 'allauth.account.context_processors'" 错误。 删除这两行代码后问题得以解决。 - Antoine Brunel

4
这个错误意味着找不到该模块。您可能只需要在服务器上安装第三方模块,称为“allauth”(或者如果您正在使用像Heroku这样的自动部署,则将其添加到requirements.txt文件中)。
pip install django-allauth

您可以在本地运行 pip freeze 命令来查看已安装的模块。

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

pip install django-allauth==0.22.0

这是您在服务器上安装的版本吗?您是在 virtualenv 还是全局安装的?也许服务器使用的环境与您想的不同,如果它运行在 virtualenv 上、在不同的 Python 版本(例如 2 而不是 3)或者您的 PYTHONPATH 已损坏,就可能出现这种情况。 - André Laszlo
我通过virtualenv安装了它,使用的是Python 3.4版本。 - Alireza Ghaffari
怎么才能确定呢?但我想是这样的! - Alireza Ghaffari
我正在使用Digitalocean,而且在使用allauth之前,网站运行得非常完美。 - Alireza Ghaffari
让我们在聊天中继续这个讨论。 (http://chat.stackoverflow.com/rooms/84347/discussion-between-andre-laszlo-and-altruistic) - André Laszlo
显示剩余4条评论

1

它与allauth 0.22.0存在问题,请安装allauth 0.20.0版本。

pip install django-allauth==0.20.0

2
我觉得你自己添加这个答案有点有趣,因为它已经在我的答案和评论中了 :) Julen的答案也非常好,因为它增加了一些背景。 - André Laszlo

0

您可以在本地运行pip freeze命令来查看已安装的模块。

要安装特定版本的django-allauth,请使用以下命令。它将解决问题。

pip install django-allauth==0.22.0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接