您的数据库没有南数据库模块'south.db.postgresql_psycopg2'

fer*_*rez 14 python django django-south

我是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.
Run Code Online (Sandbox Code Playgroud)

这是我的base_settings:

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
Run Code Online (Sandbox Code Playgroud)

本地设置,本地配置:

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/'
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗??非常感谢.

Pap*_*Sax 69

尝试pip uninstall South,然后您将看到您的应用程序是否已准备就绪.

  • 这应该是正确的答案.强制降级到1.6并不是最合适的.除非你有其他理由继续留在1.6. (8认同)
  • 非常有趣:刚安装South(即使禁用了South应用程序)也是在升级到Django 1.8时导致这个问题的原因.它确实应该是公认的答案. (6认同)

小智 9

请注意,南方现在已经过时了,支持Django 1.7中的新迁移框架,该框架基于南方,但具有重大的设计改进.

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

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


kra*_*etz 7

当我升级各种模块pip并且其中一个依赖项自动将Django升级到当前版本(1.8)时,这发生在我身上.你可能只是检查你当前的Django版本是什么(pip freeze),如果只是1.8,只需降级到1.6行(pip install -U "Django<1.7").

  • 这就像治疗症状并留下根本原因. (3认同)
  • 使用引号包围包和说明符,以便<不会被shell解释:`pip install"Django <1.7"`. (2认同)
  • 查看Papa Sax的答案.工作就像一个魅力.我在Django 1.7.1上,当我更新django_tables2并且南方从所有设置中完全删除后,pip决定带1.8.移动到1.7时,我已经冲出所有的南迁移.而且我仍然在manage.py runserver上弄得一团糟.**pip卸载南**保存了一天! (2认同)

Lah*_*iru 7

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