mysqlclient - Django no puede encontrar el módulo python de MySQLdb
python django mysql ubuntu (10)
Instalado Django desde la fuente (python setup.py install y similares), instaló MySQLdb desde la fuente (python setup.py build, python setup.py install). Usando Python 2.4 que venía instalado en el sistema operativo (CentOS 5.5). Obteniendo el siguiente mensaje de error después de iniciar el servidor:
Error loading MySQLdb module: No module named MySQLdb
El pythonpath que proporciona la información de depuración incluye
''/usr/lib/python2.4/site-packages''
y sin embargo, si ls
ese directorio, puedo ver claramente
MySQL_python-1.2.3-py2.4-linux-i686.egg
Usando el shell interactivo de Python, puedo escribir import MySQLdb
y no produce errores. Esto me lleva a creer que es un problema con el pathing de Django, pero no tengo la menor idea de dónde empezar a buscar, ya que soy nuevo en Django y en Python.
EDITAR: Y para ser un poco más específico, todo se está ejecutando actualmente como root. Todavía no he configurado ningún usuario en la máquina, por lo que no existe otro que no sea 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.
¿Has considerado instalar MySQLdb desde paquetes de python? También recomendaría hacer esto con pip
lugar de easy_install
.
Primero puedes reemplazar easy_install
con pip
:
easy_install pip
pip install pip --upgrade
Y luego instale Django a través de PIP:
pip install MySQL-python
pip install Django
Normalmente, easy_install
ya está instalado (parte de setuptools), mientras que pip es mucho mejor. También ofrece opciones de desinstalación y utiliza directorios de instalación planos en lugar de los archivos EGG magic. Esto podría resolver algunas incompatibilidades también.
¿Intentaste construir las dependencias? Esto lo resolvió para mí en Ubuntu:
sudo apt-get build-dep python-mysqldb
pip install MySQLdb-python
Este problema fue el resultado de una instalación incompleta / incorrecta del adaptador de MySQL para Python.
Específicamente, tuve que editar la ruta al archivo mysql_config
para que apunte a /usr/local/mysql/bin/mysql_config
.
Discutido con mayor detalle en este artículo:
http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/
Esto hizo el truco para mí:
sudo apt-get install python-dev
Intente esto si está utilizando Linux: - sudo apt-get install python-mysqldb
ventanas: - instale python-mysqldb o easy_install python-mysqldb
Espero que esto funcione
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
Puedes averiguar dónde Python está buscando sus bibliotecas invocando "python manage.py shell" desde la base de directorios de tu proyecto Django. Entonces hazlo:
import sys
import pprint
pprint.pprint(sys.path)
Y verás de dónde saca Python las bibliotecas. También intente hacer un "importar mysql" para ver si está eliminando un error.
Finalmente, la configuración del servicio WSGI está (probablemente) configurada con la configuración de uWSGI en Cherokee; lo siento, no conozco los detalles de esa criatura para hacer sugerencias sobre cómo determinar dónde / cómo se está cargando la ruta de la biblioteca.
Tenía este mismo problema, pero solo era un problema dentro de un virtualenv.
Lo que hice para finalmente arreglarlo fue.
workon [project_name]
pip uninstall django
pip install mysql-python
pip install django
Así que asegúrese de instalar mysql-python
antes de que django
parezca funcionar.
Esto es en un sistema Ubuntu y usando virtualenv
.
en mi caso, Python pudo acceder a mySQL, pero Django (1.6) dio el error: "Error al cargar el módulo MySQLdb: no hay un módulo llamado MySQLdb"
Estoy en un Macbook OSX (Maverick), por cierto.
Cuando traté de correr
pip install mysql-python
Obtuve un error durante la compilación: "clang: error: argumento desconocido: ''-mno-fused-madd'' [-Wunused-command-line-argument-hard-error-in-future]".
Resulta que el problema es un comportamiento actualizado del compilador de cc con el nuevo Xcode 5.1. Cuando hay un parámetro que no reconoce, lo considera como un error fatal y se cierra. La solución para anular este comportamiento se puede encontrar aquí:
http://bruteforce.gr/bypassing-clang-error-unknown-argument.html
pip install mysql-python
Resuelto mi problema :)