2010-07-14 18 views
19

Installato Django dal sorgente (installazione python setup.py e simili), installato MySQLdb dal sorgente (python setup.py build, python setup.py install). Utilizzando Python 2.4 installato sul sistema operativo (CentOS 5.5). Ottenere il seguente messaggio di errore dopo l'avvio del server:Django non riesce a trovare il modulo python MySQLdb

Error loading MySQLdb module: No module named MySQLdb

Il PYTHONPATH informazioni di debug fornisce include

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

e tuttavia, se mi ls tale directory, posso vedere chiaramente

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

Utilizzando la shell interattiva python, posso digitare import MySQLdb e non produce errori. Questo mi porta a credere che sia un problema di pathway di Django, ma non ho il minimo indizio su dove iniziare a guardare come sono nuovo sia per Django che per Python.

EDIT: E per essere un po 'più specifico, tutto è attualmente in esecuzione come root. Non ho ancora installato nessun utente sulla macchina, quindi nessuno esiste oltre a root.

EDITx2: E per essere ancora più specifici, il server Web è Cherokee e la distribuzione tramite uWSGI. Tutto installato dalla fonte.

+0

solo fare questo ------------ apt-get install python-mysqldb – shadow0359

risposta

1

Puoi scoprire dove Python sta cercando le sue librerie invocando "python manage.py shell" dalla directory base del tuo progetto Django. Quindi:

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

E vedrete da dove il Python sta tirando le librerie. Prova anche a fare un "import mysql" per vedere se sta dando un errore.

Infine, il pathing per il servizio WSGI è (probabilmente) configurato con la configurazione uWSGI in Cherokee - scusate, non conosco i dettagli di tale critter per dare suggerimenti su come determinare dove/come sta caricando la libreria sentiero.

+0

Hmm risultati interessanti, coperture manage.py pitone esecuzione in lo stesso errore che sto ottenendo. django.core.exceptions.ImproperlyConfigured: errore durante il caricamento del modulo MySQLdb: nessun modulo denominato MySQLdb – Whellow

+0

Quindi è decisamente qualcosa nel pathway python. Guardando l'output di pprint.pprint (sys.path) fornisci qualche informazione su dove sta guardando (o meno) che ti aspettavi di includere l'Egg che hai menzionato in cima? – heckj

+0

Ok, mio ​​errore. Ho dimenticato di aver cancellato temporaneamente il file .egg durante il debug di qualcosa. Ho appena rimontato (reinstallato MySQLdb) e ora posso eseguire shell manage.py. L'output di pprint ha mostrato che sta guardando direttamente a .egg:/usr/lib/python2.4/site-packages/MySQL_python-1.2.3-py2.4-linux-i686.egg Strano. Ad ogni modo, andando alla pagina, Cherokee esegue ancora l'errore del modulo No MySQLdb. EDIT: Grazie per il tuo aiuto finora! Tutti gli altri che ho chiesto finora non sono stati in grado di arrivare fino a qui. – Whellow

33

Hai pensato di installare MySQLdb da pacchetti Python? Si consiglia inoltre di farlo con pip anziché easy_install.

In primo luogo è possibile sostituire easy_install con pip:

easy_install pip 
pip install pip --upgrade 

e quindi installare Django tramite PIP:

pip install MySQL-python 
pip install Django 

Tipicamente easy_install è già installato (parte di setuptools), mentre il pip è molto meglio. Offre anche opzioni di disinstallazione e usa le directory di installazione piatte anziché i file EGG. Questo potrebbe risolvere anche alcune incompatibilità.

+0

Provare a eseguire "easy_install install pip" mi dà questo errore: Ricerca per l'installazione | Lettura http://pypi.python.org/simple/install/ Impossibile trovare la pagina di indice per "installa" (forse errata?) – Whellow

+0

@irishb: whoops, mio ​​male. 'easy_install' non ha bisogno di un verbo' install' prima. fisso! – vdboor

+0

SUGGERIMENTO per le persone 'OS X' https://twitter.com/andilabs/status/460325166082719744 – andi

17

Hai provato a creare le dipendenze? Questo lo risolse per me su Ubuntu:

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

che ha fatto il trucco anche per me. Grazie! – Pablo

+0

che dire di un Mac? – 010110110101

+0

Non sono sicuro, mi dispiace. –

1

Stavo avendo lo stesso problema, ma era solo un problema all'interno di una virtualenv.

Quello che ho fatto finalmente di risolvere il problema era

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

Così facendo in modo di installare mysql-python prima django sembra funzionare.
Si tratta di un sistema Ubuntu e utilizza virtualenv.

-1

Questo ha fatto il trucco per me:

sudo apt-get install python-dev 
7

Quello che ha funzionato per me (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 

Ha risolto il problema :)

-1

nel mio caso, Python è stato in grado di accedere a mySQL, ma Django (1.6) ha dato l'errore: "Errore nel caricamento del modulo MySQLdb: nessun modulo chiamato MySQLdb"

Sono su un Macbook OSX (Maverick), a proposito.

Quando ho provato a correre

pip install mysql-python

ho ottenuto un errore durante la compilazione: "clang: Errore: argomento sconosciuto: '-mno-fusa madd' [-Wunused-command-line-argomentazione -Hard-error-in-futuro] ".

Il problema, si scopre, è un comportamento aggiornato del compilatore cc con il nuovo Xcode 5.1. Quando c'è un parametro che non riconosce, lo considera come un errore fatale e si chiude. La soluzione a ignorare questo comportamento può essere trovato qui:

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

2

Prova questa se si utilizza linux: - sudo apt-get install python-mysqldb

finestre: - pip installare python-MySQLdb o easy_install python-mysqldb

Spero che questo dovrebbe funzionare

Problemi correlati