2010-09-03 58 views
2

我已經在本地django服務器上安裝了django/postgres,並且工作正常。我試圖讓Apache工作。我已經設置了mod_wsgi並能夠獲得「Hello World」,並重新啓動Apache。我幾乎沒有,但是當我打開本地主機/ index.html的我得到這個服務器錯誤:django,postgres 8.4,psycopg 2.2.2,python 2.7,mod_wsgi

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日誌文件中此錯誤。

Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] File "C:\Python26\lib\site-packages\django\db\__init__.py", line 77, in [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] connection = connections[DEFAULT_DB_ALIAS] [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] File "C:\Python26\lib\site-packages\django\db\utils.py", line 91, in getitem [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] backend = load_backend(db['ENGINE']) [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] File "C:\Python26\lib\site-packages\django\db\utils.py", line 49, in load_backend [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] raise ImproperlyConfigured(error_msg) [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 'django.db.backends.postgresql_psycopg2' isn't an available database backend. [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] Try using django.db.backends.XXX, where XXX is one of: [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181]
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' [Fri Sep 03 12:17:41 2010] [error] [client 97.80.165.181] Error was: cannot import name utils

你知道它可能表明什麼嗎?

更新2:

的原因是在文件的django /分貝/後端/ postgresql_psycopg2/base.py,版本2.2.2,行號9:從django.db進口utils的

但我仍然不知道如何解決這個問題。 有一個文件django/db/utils.py,所以它應該工作。畢竟,它適用於開發服務器。但不爲Apache + mod_wsgi的

+0

從內存這其實是不被鏈接到Apache的,因爲它是與Python某個窗口C運行時DLL做。在psycopg2 C擴展模塊中有一些依賴於它的東西,並且因爲缺失而失敗。雖然被看到的錯誤是上面的晦澀難懂的錯誤,但並沒有真正指出問題的原因。我相信pyscopg2的人都知道這個問題。不知道他們會怎麼做,但最近有關於他們的問題跟蹤器的一些活動。但是我的記憶可能是錯的,那完全是幻想。 – 2011-01-25 03:28:51

+0

如果有人在使用Django 1.4.x時遇到這個問題......請嘗試升級到最新版本的Django(在編寫本文時爲1.4.2)。 2012年,我在使用Django 1.4.1時遇到類似這樣的錯誤。我更新到Django 1.4.2並停止獲取錯誤。 – hangtwenty 2012-11-12 19:55:42

回答

1

也許this Ticket幫助你:

or whatever it is worth, I have confirmed that if I downgrade python to 2.6 and then likewise downgrade mod_wsgi and psycopg2, Django will work with Postgres on Apache as expected