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?
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