Problems with psycopg2 installation/Python path
django, python, pythonpath, virtualenv
Solution
Try to follow the suggestion from the `django.core.exceptions.ImproperlyConfigured` exception: use `'django.db.backends.postgresql_psycopg2'` instead of `'postgresql_psycopg2'` in `DATABASES` in your settings
Problem
I created a virtualenv in my django app folder, and there I installed all my python dependencies. My Django project is called theme, so in the theme folder there is a venv folder that contains the python libs. If I run `python manage.py syncdb` it throws`Error was: No module named postgresql_psycopg2.base`. Here is the traceback: ``` (venv)app@domain-VirtualBox:~/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 ``` But the thing is that if I try importing psycopg2 from a python command line, it works : ``` (venv)app@domain-VirtualBox:~/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() ``` and here is my python path: ``` >>> 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() ``` And the `whereis python`: ``` (venv)app@domain-VirtualBox:~/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 ``` I believe the problem lies there, but I'm not sure how to fix it. Any ideas?