2012-04-24 5 views
5

J'ai de la difficulté à configurer la base de données spatiale et à la synchroniser avec GeoDjango. Je suis en mesure de configurer la base de données spatiale selon la documentation GeoDjango et créer une application django mais quand je lanceImpossible de syncdb dans l'application GeoDjango

python manage.py sqlall world

Je reçois ce,

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
    utility.execute() 
    File "/home/smaranh/django-env/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/smaranh/django-env/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/smaranh/django-env/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/smaranh/django-env/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/core/management/commands/sqlall.py", line 4, in <module> 
    from django.core.management.sql import sql_all 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module> 
    from django.db import models 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module> 
    backend = load_backend(connection.settings_dict['ENGINE']) 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/home/smaranh/django-env/local/lib/python2.7/site-packages/django/db/utils.py", line 44, in load_backend 
    raise ImproperlyConfigured(error_msg) 
django.core.exceptions.ImproperlyConfigured: 'django.contrib.gis.db.backends.postgis' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of: 
    'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' 
Error was: No module named psycopg2.extensions 

Je suis fatigué et vraiment pas sûr Que faire? S'il vous plaît aider

EDIT

Ok j'ai trouvé ce link ce qui m'a dit ce qui a mal tourné. Maintenant, quand je rentre dans la python de \ home, et j'exercerai import psycopg2 il ne me donne pas ImportError mais quand je suis dans le env virtuel, je reçois le ImportError

(django-env)[email protected]:~/geodjango$ python 
Python 2.7.2+ (default, Oct 4 2011, 20:06:09) 
[GCC 4.6.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import psycopg2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named psycopg2 

Maintenant, le lien me guide dans la façon de ajouter le chemin mais je ne comprends pas vraiment le processus depuis que je suis nouveau et je ne veux pas l'enfoncer plus loin. Alors quelqu'un peut-il me guider étape par étape comment ajouter le sys.path ??

+0

Pouvez-vous poster la valeur DATABASES sur votre settings.py? – dannyroa

+0

'DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', # Ajouter 'postgresql_psycopg2', 'mysql', 'sqlite3' ou 'oracle'. 'NAME': 'geodjango', # Ou chemin d'accès au fichier de base de données si vous utilisez sqlite3. 'USER': 'smaranh', # Non utilisé avec sqlite3. 'PASSWORD': '', # Non utilisé avec sqlite3. 'HOST': '', # Définir une chaîne vide pour localhost. Non utilisé avec sqlite3. 'PORT': '', # Définir la chaîne vide par défaut. Non utilisé avec sqlite3. } } ' – Sam007

+0

@dannyroa Je pense que j'ai trouvé la réponse, je viens d'éditer mon post, pourriez-vous m'aider à le comprendre et me dire comment devrais-je aller plus loin? – Sam007

Répondre

18

Si vous utilisez virtualenv vous devez installer psycopg2 dans l'environnement, quelque chose comme:

pip install psycopg2 

mais vous devez installer des paquets avec apt avant que:

sudo apt-get install python-dev postgresql-server-dev-all 
+0

alors je devrais d'abord installer 'sudo apt-get installez python-dev postgresql-server-dev-all' puis installez 'pip install psycopg2' – Sam007

+0

Merci beaucoup @ diegueus9, c'était vraiment une grande aide – Sam007

+0

@ Sam007 mon plaisir – diegueus9