2009-09-05 70 views
30

Tengo Pythong2.6, psycopg2 y pgAdmin3 instalados usando Macports. Mi settings.py es:Django/Python Principiante: Error al ejecutar python manage.py syncdb - psycopg2 no encontrado

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. 

El error que consigo cuando corro python manage.py syncdb es:

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 

Tenga en cuenta, soy un principiante en esta materia. Originalmente soy un tipo PHP y estoy probando Python para un pequeño proyecto personal. ¿Debo "activar" Postgres?

Además, cuando yo sudo python manage.py runserver 8080 consigo este error:

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 

favor, me guía. Cualquier respuesta será apreciada.

Gracias,

Wenbert!

Respuesta

32

Parece que hay un problema con la instalación de su psycopg2 - Python no lo encuentra. Este es un problema de instalación de Python, no un problema de Django.

Usted puede tratar de cargarlo manualmente utilizando el intérprete de Python y ver si funciona:

$ python 
>>> import psycopg2 

Si obtiene una excepción ImportError, su instalación es errónea. Para obtener una lista de todos los directorios Python busca los módulos, utilice sys.path:

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

También puede agregar directorios personalizados a la ruta de búsqueda de módulos de Python mediante la modificación de la variable sys.path. Para ello, en algún lugar antes de la respectiva import declaración (s):

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

# ... 
import psycopg2 
+0

¿Qué debo hacer para que Python busque en esta ruta /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages en lugar de /Library/Frameworks/Python.framework/Versions /2.6/lib/python2.6/site-packages – wenbert

+0

Puede modificar sys.path para agregar sus propios directorios de búsqueda. Para django, debes hacer esto en tu settings.py. Ver mi publicación actualizada para más detalles. –

+0

¿Está bien si creé un enlace simbólico a la ruta de Python creada por Macports? Básicamente, tengo algo como esto: Python.framework -> /opt/local/Library/Frameworks/Python.framework – wenbert

3

Aunque lo instaló, Python aparentemente no puede encontrar el módulo psycopg2. Esto generalmente se debe a que el módulo no está en la ruta de Python. Vea si puede encontrar una carpeta llamada psycopg2 en /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages. Si no está allí, ¿MacPorts te dijo dónde puso psycopg2? Si puede localizarlo, simplemente muévalo al directorio site-packages y estará bien.

+0

El psycopg2 se encuentra aquí: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/psycopg2-2.0.12 -py2.6.egg-info ¿Qué sugieres que haga? – wenbert

11

Para el registro me dieron el mismo error por una razón diferente:

me había puesto

'ENGINE': 'django.db.backends.postgresql' 

en lugar de

'ENGINE': 'django.db.backends.postgresql_psycopg2' 

en settings.py

0

La respuesta de Tim funcionó para mí también. De forma predeterminada, settings.py muestra opciones como 'postgresql_psycopg2', 'mysql', etc., sin un nombre de paquete. Prefijo con 'django.db.backends'. funcionó para mí (para postgresql_psycopg2, al menos).

1

Sí, la respuesta de Tim también funciona para mí. Funciona sin el prefijo 'django.db.backends'. además. Pero recuerde crear la base de datos o el esquema que mencionó en la configuración.PY:

DATABASE_NAME = 'your_db_name' 

manualmente utilizando el cliente de base de datos para cuando se ejecuta 'python manage.py syncdb' que no reciben el mismo problema. Estaba atrapado porque no lo creé manualmente. Tengo el mismo problema puede ser porque utilicé buildout.

1

que tiene el mismo error, pero era porque estaba usando python26 ./manage.py runserver cuando mi virtualenv sólo tenía python y python2.6 ejecutables (por lo tanto se está utilizando el sistema python26, que no tienen instalado psycopg2

+0

gracias esto me ayudó – mtay

21

Si tiene pip instalado, basta con instalar la extensión faltante mediante la ejecución :

$ pip install psycopg2 
+0

Tuve un problema adicional: http://stackoverflow.com/questions/11618898/pg-config-executable-not-found –

+0

Una vez que psycopg2 se instala a través del gestor pkg debe ejecutar el comando pip – JamesC

3

me di cuenta que no tenía instalado psycopg2

aptitude install python-psycopg2 

Trabajó como un encanto

1

Para mí, psycopg2 fué instalado, pero no en el virtualenv en la que Django estaba en marcha. Estos dos pasos se fija:

sudo apt-get build-dep python-psycopg2 
sudo /opt/myenv/bin/pip install psycopg2 
0

tuve este problema recientemente después de la actualización de homebrew en OSX. psycopg2 ya fue incluido en mi virtualenv acabo reinstalado psycopg2 y funcionó de nuevo

pip install --forece-reinstall psycopg2

0

Estoy en Windows y había instalado psycopg2, pero la versión de 64 bits. Así que mi solución era para descargar el 32 bits uno de here después en PowerShell con mi entorno virtual activada, mi solución era:

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

(Windows Python 3.4 instalación instala automáticamente easy_install y PIP, y pip es la manera más fácil . para eliminar el paquete, incluso si instaló originalmente utilizando easy_install)

Cuestiones relacionadas