django, postgres 8.4, psycopg 2.2.2, python 2.7, mod_wsgi

Я установил django / postgres на локальный сервер django и отлично работает. Я пытаюсь заставить Apache работать. Я установил mod_wsgi и смог получить «Hello World» и перезапустить Apache. Я почти у цели, но когда открываю localhost / index.html, я получаю следующую ошибку сервера:

TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 
'django.db.backends.postgresql_psycopg2' isn't an available database 
backend. 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1] Try using 
django.db.backends.XXX, where XXX is one of: 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1]     'dummy', 
'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1] Error was: 
cannot import name utils 

Возможно ли, что mod_wsgi и версия psycopg несовместимы? Кто-нибудь пробовал такую ​​установку?

Обновление 1:

Я понизил версию до 2.6, mod_wsgi, psycopg2, но по-прежнему получаю эту ошибку в файле журнала apache.

Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] Файл "C: \ Python26 \ lib \ site-packages \ django \ db \ __ init__.py", строка 77, в [Пт, 03 сентября, 12 : 17: 41 2010] [ошибка] [клиент 97.80.165.181] соединение = соединения [DEFAULT_DB_ALIAS] [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] Файл "C: \ Python26 \ lib \ site-packages \ django \ db \ utils.py ", строка 91, в getitem [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] backend = load_backend (db ['ENGINE']) [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] Файл "C: \ Python26 \ lib \ site-packages \ django \ db \ utils.py", строка 49 , в load_backend [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181], поднять ImproperlyConfigured (error_msg) [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] TemplateSyntaxError: Обнаружено неправильно Настроено во время рендеринга: django.db.backends.postgresql_psycopg2 не является доступным сервером базы данных. [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181] Попробуйте использовать django.db.backends.XXX, где XXX - одно из: [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80.165.181]
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' [Пт, 3 сентября, 12:17:41 2010] [ошибка] [клиент 97.80. 165.181] Ошибка: невозможно импортировать утилиты имен

Вы знаете, что это может означать?

Обновление 2:

Причина в файле django / db / backends / postgresql_psycopg2 / base.py, версия 2.2.2, строка номер 9: из django.db import utils

Но я до сих пор не знаю, как это исправить. Есть файл django / db / utils.py, так что он должен работать. В конце концов, это работает для сервера разработки. Но не для Apache + mod_wsgi


person Jesse    schedule 03.09.2010    source источник
comment
По памяти это на самом деле связано с тем, что определенная DLL среды выполнения Window C не связана с Apache, как с Python. В модуле расширения psycopg2 C есть что-то, что зависит от него, и из-за его отсутствия происходит сбой. Ошибка, хотя и видна, - это неясная ошибка, приведенная выше, которая на самом деле не указывает на проблему. Я считаю, что люди pyscopg2 знают об этой проблеме. Не уверен, что они собираются с этим делать, но в их системе отслеживания проблем в последнее время были заметны некоторые действия по этому поводу. Но тогда моя память могла ошибаться, и это все фантастика.   -  person Graham Dumpleton    schedule 25.01.2011
comment
Если кто-то, использующий Django 1.4.x, столкнется с этим вопросом ... Попробуйте выполнить обновление до самой последней версии Django (1.4.2 на момент написания). Я получал аналогичную ошибку в 2012 году, используя Django 1.4.1. Я обновился до Django 1.4.2 и перестал получать ошибку.   -  person driftcatcher    schedule 12.11.2012


Ответы (1)


Возможно, этот билет поможет вам:

или что бы это ни стоило, я подтвердил, что если я понижу версию python до 2.6, а затем аналогичным образом понижу версию mod_wsgi и psycopg2, Django будет работать с Postgres на Apache, как ожидалось.

person Andre Bossard    schedule 03.09.2010