2010-07-14 23 views
19

Django instalado desde la fuente (instalación de python setup.py y tal), MySQLdb instalado desde la fuente (python setup.py build, python setup.py install). Usando Python 2.4 que vino instalado en el sistema operativo (CentOS 5.5). Conseguir el siguiente mensaje de error después de iniciar el servidor:Django incapaz de encontrar el módulo python de MySQLdb

Error loading MySQLdb module: No module named MySQLdb

El PYTHONPATH la información de depuración proporciona incluye

'/usr/lib/python2.4/site-packages'

y, sin embargo, si ls ese directorio, que pueda ver claramente a

MySQL_python-1.2.3-py2.4-linux-i686.egg

Utilizando el shell interactivo de python, puedo escribir import MySQLdb y no produce errores. Esto me lleva a pensar que es un tema de Django, pero no tengo la menor idea de dónde empezar a buscar, ya que soy nuevo tanto para Django como para Python.

EDITAR: Y para ser un poco más específico, todo se ejecuta actualmente como root. Aún no configuré usuarios en la máquina, por lo que no existe ninguno más que root.

EDITx2: Y para ser aún más específico, el servidor web es Cherokee y se implementa mediante uWSGI. Todo instalado desde la fuente.

+0

a hacer esto ------------ apt-get install python-MySQLdb – shadow0359

Respuesta

1

Puede averiguar dónde Python busca sus bibliotecas invocando "python manage.py shell" desde la base de directorios de su proyecto Django. Entonces, hazlo:

import sys 
import pprint 
pprint.pprint(sys.path) 

Y verás de dónde está extrayendo la python. También intente hacer una "importación de mysql" para ver si eso está provocando un error.

Finalmente, el rumbo del servicio WSGI se configura (probablemente) con la configuración de uWSGI en Cherokee; disculpe, no conozco los detalles de ese bicho para hacer sugerencias sobre cómo determinar dónde y cómo está cargando la biblioteca camino.

+0

Hmm resultados interesantes, pitón ejecutar manage.py shell en ese mismo error que estoy recibiendo django.core.exceptions.ImproperlyConfigured: Error al cargar el módulo MySQLdb: Ningún módulo llamado MySQLdb – Whellow

+0

Entonces definitivamente es algo en el camino de python. ¿Estudió la salida de pprint.pprint (sys.path) para proporcionar alguna información sobre dónde se ve (o no) que esperaba incluir el huevo que mencionó en la parte superior? – heckj

+0

Bien, mi error. Olvidé que había borrado el .egg temporalmente mientras depuraba algo. Simplemente lo devolví (reinstalé MySQLdb) y ahora puedo ejecutar el shell manage.py. La salida de pprint mostró que está mirando directamente a .egg:/usr/lib/python2.4/site-packages/MySQL_python-1.2.3-py2.4-linux-i686.egg Weird. De todos modos, ir a la página que Cherokee ejecuta aún produce el error del módulo No MySQLdb. EDIT: gracias por tu ayuda hasta ahora! Todos los demás que he preguntado hasta ahora han sido incapaces de llegar tan lejos. – Whellow

33

¿Ha considerado instalar MySQLdb desde paquetes de Python? También recomendaría hacer esto con pip en lugar de easy_install.

primer lugar se puede reemplazar easy_install con pip:

easy_install pip 
pip install pip --upgrade 

y luego instalar Django usando PIP:

pip install MySQL-python 
pip install Django 

Normalmente easy_install tenga instalado (parte de setuptools), mientras pip es mucho mejor. También ofrece opciones de desinstalación, y utiliza directorios de instalación planos en lugar de magia de archivos de EGG. Esto podría resolver algunas incompatibilidades también.

+0

Intentar ejecutar "easy_install install pip" me da este error: Buscar instalación | Leer http://pypi.python.org/simple/install/ No se pudo encontrar la página de índice para 'instalar' (¿quizás mal escrito?) – Whellow

+0

@irishb: whoops, mi mal. 'easy_install' no necesita primero un verbo' install'. ¡fijo! – vdboor

+0

CONSEJO para gente de 'OS X' https://twitter.com/andilabs/status/460325166082719744 – andi

17

¿Has intentado crear las dependencias? Esto lo resolvió para mí en Ubuntu:

sudo apt-get build-dep python-mysqldb 
pip install MySQLdb-python 
+0

que me hizo el truco también. ¡Gracias! – Pablo

+0

¿qué tal en una Mac? – 010110110101

+0

No estoy seguro, lo siento. –

1

Estaba teniendo el mismo problema, pero era solo un problema dentro de un virtualenv.

Lo que hice para fijar finalmente fue

workon [project_name] 
pip uninstall django 
pip install mysql-python 
pip install django 

así que asegurarse de instalar mysql-python antes django parece funcionar.
Esto está en un sistema Ubuntu y usa virtualenv.

-1

Esto hizo el truco para mí:

sudo apt-get install python-dev 
7

Lo que funcionó para mí (Linux Mint):

sudo apt-get install libmysqlclient-dev (this was the key for me) 
pip install mysql-python 
pip install django 
-1
pip install mysql-python 

solucionado mi problema :)

-1

en mi caso, Python pudo acceder a mySQL, pero Django (1.6) dio el error: "Error al cargar el módulo MySQLdb: Ningún módulo llamado MySQLdb"

Estoy en una Macbook OSX (Maverick), por cierto.

Cuando traté de correr

pip install mysql-python

me dio un error durante la compilación: "sonido metálico: error: argumento desconocido: [-comando de línea de argumento -Wunused '-mno-fusionado-madd' -hard-error-in-future]. "

El problema, resulta que es un comportamiento actualizado del compilador de cc con el nuevo Xcode 5.1. Cuando hay un parámetro que no reconoce, lo considera un error fatal y se cierra. La solución a anular este comportamiento se puede encontrar aquí:

http://bruteforce.gr/bypassing-clang-error-unknown-argument.html

2

probar este si está utilizando Linux: - sudo apt-get install python-MySQLdb

ventanas: - pip install python-MySQLdb o easy_install pitón-MySQLdb

Hope esto debería funcionar

Cuestiones relacionadas