2010-01-27 71 views
0

所以我想讓Django第一次運行mod-wsgi。我已經按照示例中所示配置了Apache,並且我很確定我做的一切都正確。Django + mod-wsgi + psycopg2問題

我沒有設置PYTHON_EGG_CACHE變量,所以它使用默認值:/var/www/.python-eggs。我已經創建了這個目錄,並且爲用戶www-data寫了這個目錄。

當我打開網站就說明從500.html模板輸出和這裏就是我在日誌中得到:

... 
    File "/usr/local/.../parts/django/django/db/__init__.py", line 17, in load_backend 
    return import_module('.base', 'django.db.backends.%s' % backend_name) 
    File "/usr/local/.../parts/django/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/usr/local/.../parts/django/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module> 
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e) 
ImproperlyConfigured: Error loading psycopg2 module: cannot import name tz 

下面是我在/var/www/.python-eggs/

# ls -la /var/www/.python-eggs/ 
total 12 
drwxr-xr-x 3 www-data www-data 4096 Jan 27 04:19 . 
drwxr-xr-x 5 root  root  4096 Jan 27 04:18 .. 
drwxr-xr-x 3 www-data www-data 4096 Jan 27 04:19 psycopg2-2.0.13-py2.5-linux-i686.egg-tmp 

# ls -la /var/www/.python-eggs/psycopg2-2.0.13-py2.5-linux-i686.egg-tmp/psycopg2/ 
total 368 
drwxr-xr-x 2 www-data www-data 4096 Jan 27 04:19 . 
drwxr-xr-x 3 www-data www-data 4096 Jan 27 04:19 .. 
-rwxr-xr-x 1 www-data www-data 363318 Jan 22 03:44 _psycopg.so 

在psycopg2雞蛋的唯一文件目錄是_psycopg.so。沒有tz.py文件,我認爲這是問題。

請指教。

P.S.,我使用buildout和djangorecipe來部署Django。我使用buildout用戶運行構建腳本。不知道它是否合理。

P.P.S,psycopg2已正確安裝,因爲我可以運行syncdb

+0

當您使用解釋器並執行「from psycopg2 import tz」時會發生什麼? – 2010-01-27 19:36:49

+0

如果我從解釋器「從psycopg2導入tz」執行,一切正常。正如我所說我能夠運行syncdb,所以psycopg2正確安裝。 – 2010-01-28 04:58:45

+1

嘗試在django.wsgi中設置os.environ ['PYTHON_EGG_CACHE'] ='/ tmp',看看它是否有所作爲。 – Bear 2010-01-29 08:28:24

回答

1

好的,我找到了解決方案。我已經使用系統python進行構建,並且它已經在site-packages中包含了psycopg2。似乎系統站點包中的psycopg2和buildout安裝的psycopg2之間存在某種衝突。我建立了一個虛擬python環境並用它來構建。這有幫助!沒有更多的進口錯誤。

0

我會建議如果你能夠從命令行導入它,然後在路徑的某處,www數據用戶被禁止訪問雞蛋路徑。