2012-06-20 21 views
5

Ho creato un virtualenv nella mia cartella app django, e lì ho installato tutte le mie dipendenze python. Il mio progetto Django è chiamato tema, quindi nella cartella del tema c'è una cartella venv che contiene le librerie python. Se corro python manage.py syncdb getta Error was: No module named postgresql_psycopg2.base. Ecco il traceback:Problemi con l'installazione di psycopg2/percorso Python

(venv)[email protected]:~/dj/theme$ python manage.py syncdb 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 459, in execute_manager 
    utility.execute() 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module> 
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module> 
    from django.db import models 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module> 
    backend = load_backend(connection.settings_dict['ENGINE']) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/home/app/dj/theme/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 51, in load_backend 
    raise ImproperlyConfigured(error_msg) 
django.core.exceptions.ImproperlyConfigured: 'postgresql_psycopg2' isn't an available database backend. 
Try using django.db.backends.postgresql_psycopg2 instead. 
Error was: No module named postgresql_psycopg2.base 

Ma il fatto è che se provo importazione psycopg2 da una riga di comando python, funziona:

(venv)[email protected]:~/dj/theme$ python 
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import psycopg2 
>>> quit() 

ed ecco il mio percorso pitone:

>>> import sys 
>>> print sys.path 
['', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/app/dj/theme/venv/lib/python2.7', '/home/leonsas/dj/theme/venv/lib/python2.7/plat-linux2', '/home/app/dj/theme/venv/lib/python2.7/lib-tk', '/home/app/dj/theme/venv/lib/python2.7/lib-old', '/home/app/dj/theme/venv/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/home/app/dj/theme/venv/local/lib/python2.7/site-packages', '/home/app/dj/theme/venv/lib/python2.7/site-packages'] 
>>> quit() 

E il whereis python:

(venv)[email protected]:~/dj/theme$ whereis python 
python: /usr/bin/python2.7 /usr/bin/python /usr/bin/python2.7-config /etc/python2.7 /etc/python /usr/lib/python2.7 /usr/bin/X11/python2.7 /usr/bin/X11/python /usr/bin/X11/python2.7-config /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.gz 

Credo che il problema risieda qui, ma non sono sicuro di come risolverlo. Qualche idea?

risposta

10

cercano di seguire il suggerimento di eccezione django.core.exceptions.ImproperlyConfigured: uso 'django.db.backends.postgresql_psycopg2' invece di 'postgresql_psycopg2' in DATABASES nelle impostazioni

+0

Sì ha funzionato. Avevo provato a usare django.db.backends.postgresql_psycopg2 (senza le virgolette), ma il modo corretto era di passarlo come una stringa, quindi "django.db.backends.postgresql_psycopg2" funzionava. – leonsas