【问题标题】:There is no South database module 'south.db.postgresql_psycopg2' for your database您的数据库没有 South 数据库模块 'south.db.postgresql_psycopg2'
【发布时间】:2015-06-11 06:30:48
【问题描述】:

我是 django 的新手,我从南方收到了这个错误,但我不知道我错过了什么。我搜索答案,但我找不到任何东西。

There is no South database module 'south.db.postgresql_psycopg2' for your database. Please either choose a supported database, check for SOUTH_DATABASE_ADAPTER[S] settings, or remove South from INSTALLED_APPS.

这是我的基本设置:

from unipath import Path

BASE_DIR = Path(__file__).ancestor(3)


SECRET_KEY = 'pp@iz7%bc7%+*11%usf7o@_e&)r2o&^3%zjse)n=6b&w^hem96'

DJANGO_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

)

THIRD_PARTY_APPS = (
    'south',

)

LOCAL_APPS = (


)


INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

ROOT_URLCONF = 'misite.urls'

WSGI_APPLICATION = 'misite.wsgi.application'

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

本地设置:

from .base import *

TEMPLATE_DEBUG = True



ALLOWED_HOSTS = []

DEBUG = True

DEFAULT_FROM_EMAIL = 'webmaster@example.com'





# ----------------------------
    # POSTGRESQL

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'misite',
        'USER:': 'fernandoperez',
        'PASSWORD': 'admin',
        'HOST':'localhost',
        'PORT':'5432',
    }
}

SOUTH_DATABASE_ADAPTERS = {
     'default': "south.db.postgresql_psycopg2"
 }

STATIC_URL = '/static/'

有人可以帮助我吗?非常感谢。

【问题讨论】:

  • 你为什么还要使用 South?自从引入了内置迁移以来,Django 现在是第二个版本。
  • 因为他有一个 1.6 的应用程序需要很长时间才能移植到 1.7?

标签: python django django-south


【解决方案1】:

试试pip uninstall South,然后您会看到您的应用程序是否已准备好 1.8。

【讨论】:

  • 这应该是正确的答案。强制降级到 1.6 一点也不合适。除非你有其他理由留在 1.6。
  • 非常有趣:只是安装了 South(即使禁用了 South 应用程序)是我升级到 Django 1.8 时出现这个问题的原因。这确实应该是公认的答案。
【解决方案2】:

当我使用 pip 升级各种模块时发生这种情况,其中一个依赖项自动将 Django 升级到当前版本 (1.8)。您可以检查一下您当前的 Django 版本 (pip freeze),如果是 1.8,只需降级到 1.6 行 (pip install -U "Django<1.7")。

【讨论】:

  • pip install -U Django==1.7
  • 这将完全安装 1.7 版,我想要 1.6 行中的最新版本,因此 Django<1.7
  • 用引号将包和说明符括起来,这样 pip install "Django<1.7"。
  • 这就像治标不治本。
  • 查看 Papa Sax 的答案。像魅力一样工作。我在 Django 1.7.1 上,当我更新 django_tables2 并且 South 从所有设置中完全删除时,pip 决定带上 1.8。在迁移到 1.7 时,我已经清除了所有南迁移。而且我仍然在 manage.py runserver 上弄得一团糟。 pip uninstall South 拯救了这一天!
【解决方案3】:

请注意,South 现在已停止使用,以支持 Django 1.7 中的新迁移框架,该框架基于 South,但具有显着的设计改进。

有关 Django 迁移框架的更多详细信息,您可以参考发行说明 - https://docs.djangoproject.com/en/1.9/releases/1.7/#schema-migrations

South 不适用于 Django 1.7;它仅支持 1.4、1.5 和 1.6 版本。

【讨论】:

  • South 不适用于 Django 1.7;它仅支持 1.4、1.5 和 1.6 版本。 在这种情况下,当唯一可用的 django 版本是 1.8 时,为什么 Ubuntu 16.04 有一个 python-django-south 包?
【解决方案4】:

但关键是如何解决保留 django 1.8(最新版本)的问题。我不认为降级到 1.6 是一个好主意,因为 django 1.6 不再是安全版本。

【讨论】:

  • 我在运行测试时遇到了这个问题。
【解决方案5】:

使用 django 2.2.4 我意识到“south”被包含在我的第三方安装的应用程序之一(socket_server)中。但不是在模块上,而是在迁移策略中(也许创建模块的人仍在使用旧版本的 django)。因此,将名称从 0001_inicial.py 更改为 0001_inicial_old 并且 django 无法找到它并生成了另一个。 工作作为一半的措施(插座应该安装没有它)

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2011-01-19
    • 2014-09-16
    相关资源
    最近更新 更多