Пример manage.py. Решение ошибки "check for SOUTH_DATABASE_ADAPTER[S] settings"

20 ноября 2016 г. 13:51

Известно, что начиная с Django 1.7 нет необходимости подключать South, так как в Django 1.7 добавили встроенную систему миграций. Но иногда при установке зависимостей какие-то зависимости всё ещё тянут за собой приложение South. И когда пытаешься запустить своё приложение, то debug ругается:

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.

Отсюда видно, что South предлагает добавить параметр SOUTH_DATABASE_ADAPTERS, например так:

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

Но к сожалению, это у меня данный параметр почему-то не работает. Тогда я пошёл другим путём: добавил команду удаления South после команды сборки requirements.

Мой рабочий manage.py:

from os.path import join, exists, abspath, dirname
import os
import sys
import subprocess
import shutil

PROJECT_ROOT = abspath(dirname(__file__))
REQUIREMENTS = join(PROJECT_ROOT, 'requirements.txt')

VE_ROOT = join(PROJECT_ROOT, 'env')


def go_to_ve():
    # going into ve
    if not sys.prefix == VE_ROOT:
        if sys.platform == 'win32':
            python = join(VE_ROOT, 'Scripts', 'python.exe')
        else:
            python = join(VE_ROOT, 'bin', 'python')

        retcode = subprocess.call([python, __file__] + sys.argv[1:])
        sys.exit(retcode)

delete_ve = 'delete_ve' in sys.argv
if delete_ve:
    if exists(VE_ROOT):
        print 'Deleting env...'
        shutil.rmtree(VE_ROOT)
        print 'Done.'
        sys.exit(0)

update_ve = 'update_ve' in sys.argv
if update_ve:
    # install ve
    if not exists(VE_ROOT):
        import virtualenv
        print 'Creating virtualenv...'
        virtualenv.logger = virtualenv.Logger(consumers=[])
        virtualenv.create_environment(VE_ROOT, site_packages=False)
        print 'Done.'

    go_to_ve()
    # check requirements
    import pip
    pip.main(['install', '-r', REQUIREMENTS])
    pip.main(['uninstall', 'South', '--yes'])
    sys.exit(0)

if exists(VE_ROOT):
    go_to_ve()
    # print 'Found virtualenv. Entering...'

try:
    import settings
except ImportError:
    import sys
    sys.stderr.write(
        "Error: Can't find the file 'settings.py' in the directory")
    sys.exit(1)

if __name__ == "__main__":
    if not delete_ve:
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

        from django.core.management import execute_from_command_line
        execute_from_command_line(sys.argv)

Работает! Немного костыльно, но работает.

Оцените статью

0 из 5 (всего 0 оценок)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/check-for-south-database-adapters/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/check-for-south-database-adapters/">https://vivazzi.pro/ru/it/check-for-south-database-adapters/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц