2012-06-20 14 views
5

Creé un virtualenv en mi carpeta de aplicaciones django, y allí instalé todas mis dependencias de python. Mi proyecto Django se llama tema, por lo que en la carpeta del tema hay una carpeta de venv que contiene las libs de python. Si ejecuto python manage.py syncdb arroja Error was: No module named postgresql_psycopg2.base. Aquí está el rastreo:Problemas con la instalación de psycopg2/Python path

(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 

Pero la cosa es que si intento importar psycopg2 desde una línea de comandos Python, funciona:

(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() 

y aquí está mi camino pitón:

>>> 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() 

Y el 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 

Creo que el problema está ahí, pero no estoy seguro de cómo solucionarlo. ¿Algunas ideas?

Respuesta

10

tratar de seguir la sugerencia de la django.core.exceptions.ImproperlyConfigured excepción: uso 'django.db.backends.postgresql_psycopg2' en lugar de 'postgresql_psycopg2' en DATABASES en la configuración de

+0

Sí funcionó. Intenté usar django.db.backends.postgresql_psycopg2 (sin las comillas), pero la forma correcta fue pasarlo como una cadena, así que 'django.db.backends.postgresql_psycopg2' funcionó. – leonsas

Cuestiones relacionadas