web-dev-qa-db-fra.com

Django/Python Débutant: erreur lors de l'exécution de python manage.py syncdb - psycopg2 introuvable

J'ai Pythong2.6, psycopg2 et pgAdmin3 installés en utilisant Macports. Mon settings.py est:

DATABASE_ENGINE = 'postgresql_psycopg2'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'Oracle'.
DATABASE_NAME = 'mysite'             # Or path to database file if using sqlite3.
DATABASE_USER = 'postgres'             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_Host = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.

L'erreur que je reçois lorsque j'exécute python manage.py syncdb est la suivante:

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/base.py", line 221, in execute
    self.validate()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/validation.py", line 22, in get_validation_errors
    from Django.db import models, connection
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/__init__.py", line 41, in <module>
    backend = load_backend(settings.DATABASE_ENGINE)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/__init__.py", line 17, in load_backend
    return import_module('.base', 'Django.db.backends.%s' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/backends/postgresql_psycopg2/base.py", line 22, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

S'il vous plaît noter, je suis un débutant complet dans ce genre de choses. Je suis à l'origine un gars de PHP et j'essaie Python pour un petit projet personnel. Dois-je "activer" Postgres?

En outre, lorsque je Sudo python administre.py serveur d'exécution 8080 .__

Validating models...
Unhandled exception in thread started by <function inner_run at 0x1242670>
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/commands/runserver.py", line 48, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/core/management/validation.py", line 22, in get_validation_errors
    from Django.db import models, connection
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/__init__.py", line 41, in <module>
    backend = load_backend(settings.DATABASE_ENGINE)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/__init__.py", line 17, in load_backend
    return import_module('.base', 'Django.db.backends.%s' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django/db/backends/postgresql_psycopg2/base.py", line 22, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

Guidez-moi s'il-vous-plaît. Toute réponse sera appréciée.

Merci,

Wenbert!

35
wenbert

Il semble y avoir un problème avec votre installation psycopg2 - Python ne le trouve pas. C'est un problème d'installation de Python, pas un problème de Django.

Vous pouvez essayer de le charger manuellement à l'aide de l'interpréteur Python et voir si cela fonctionne:

$ python
>>> import psycopg2

Si vous obtenez une exception ImportError, votre installation est erronée. Pour obtenir la liste de tous les répertoires recherchés par Python, utilisez sys.path:

$ python
>>> import sys
>>> print sys.path

Vous pouvez également ajouter des répertoires personnalisés au chemin de recherche du module Python en modifiant la variable sys.path. Faites cela quelque part avant la ou les instructions import respectives:

import sys
sys.path.append("my-path")

# ...
import psycopg2
35
Ferdinand Beyer

Si vous avez pip installé, installez simplement l'extension manquante en lançant:

$ pip install psycopg2
27
erator

Suis les étapes:

  1. Installez les bibliothèques python sur votre système d'exploitation:
    • python-dev
    • libpq-dev
  2. Exécutez la commande pour installer la bibliothèque psycopg2:
    • easy_install psycopg2 

source: http://initd.org/psycopg/install/

7
tremendows

J'ai réalisé que je n'avais pas installé psycopg2

aptitude install python-psycopg2

Travaillé comme un charme

3
Eliel

Bien que vous l’ayez installé, Python ne peut apparemment pas trouver le module psycopg2. Cela est généralement dû au fait que le module n'est pas sur le chemin de Python. Voyez si vous pouvez trouver un dossier nommé psycopg2 dans /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages. Si ce n’est pas le cas, MacPorts vous a-t-il dit où il plaçait psycopg2? Si vous pouvez le localiser, déplacez-le simplement dans le répertoire site-packages et tout ira bien.

3
Simon

Pour moi, psycopg2 était bien installé, mais pas dans le virtualenv dans lequel Django était exécuté. Ces deux étapes l'ont corrigé:

Sudo apt-get build-dep python-psycopg2
Sudo /opt/myenv/bin/pip install psycopg2
2
aliteralmind

Oui, la réponse de Tim fonctionne aussi pour moi. Cela fonctionne sans le préfixe 'Django.db.backends.' également. Mais souvenez-vous de créer la base de données ou le schéma que vous avez mentionné dans settings.py:

DATABASE_NAME = 'your_db_name' 

manuellement à l'aide de votre client de base de données, vous ne rencontrez pas le même problème lorsque vous exécutez 'python manage.py syncdb'. J'étais coincé parce que je ne l'avais pas créé manuellement. J'ai le même problème peut-être parce que j'ai utilisé buildout. 

1
Harshith J.V.

J'ai eu la même erreur, mais c'était parce que j'utilisais python26 ./manage.py runserver alors que mon virtualenv ne contenait que des exécutables python et python2.6 (le système python26 était donc utilisé, sans que psycopg2 soit installé

1
Craig Blaszczyk

CELA M'A AIDÉ:

Je viens d’ajouter le chemin bin de PostgreSQL à ENV et il a pu affiner le dll nécessaire: C:\Program Files (x86)\PostgreSQL\9.4\bin

https://groups.google.com/forum/#!topic/robotframework-users/qLq9KvHe1wE

0
Marcin Rapacz

Je suis sous Windows et ai installé psycopg2, mais la version 64 bits. Mon correctif consistait donc à télécharger le fichier 32 bits à partir de ici puis dans PowerShell avec mon environnement virtuel activé, mon correctif était le suivant: 

pip uninstall psycopg2
easy_install C:\WHEREVER_I_DOWNLOADED_IT\psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe

(Le programme d'installation de Windows Python 3.4 installe automatiquement easy_install et pip, et pip est le moyen le plus simple de supprimer le paquet, même s'il a été installé à l'origine à l'aide d'easy_install.)

0
Chris

La réponse de Tim a fonctionné pour moi aussi. Par défaut, settings.py affiche des options telles que 'postgresql_psycopg2', 'mysql', etc. sans nom de paquet Préfixe avec 'Django.db.backends.' travaillé pour moi (pour postgresql_psycopg2, au moins).

0
Reece

J'ai eu ce problème récemment après la mise à jour de l'homebrew sous OSX . Psycopg2 était déjà répertorié dans mon virtualenv Je viens de réinstaller psycopg2 et tout a fonctionné

pip install --forece-reinstall psycopg2

0
lukeaus