Aktualizacja dla osób używających Pythona3: Możesz po prostu użyć conda install mysqlclient
zainstalować biblioteki wymagane do korzystania z MySQLdb w obecnej postaci. Pomocną wskazówką było następujące pytanie SO:Python 3 ImportError:Brak modułu o nazwie „ConfigParser”
. Zainstalowanie mysqlclient spowoduje zainstalowanie mysqlclient, mysql-connector i llvmdev (przynajmniej te 3 biblioteki zostały zainstalowane na moim komputerze).
Oto opowieść o moim chaotycznym doświadczeniu z tym problemem. Bardzo chciałbym zobaczyć to edytowane lub uogólnione, jeśli masz lepsze doświadczenia z problemem... zastosuj trochę tej magii SO.
Uwaga:komentarze w następnym akapicie dotyczą systemu Snow Leopard, ale nie Lion, który wydaje się wymagać 64-bitowego MySQL
Po pierwsze, autor (nadal?) MySQLdb mówi tutaj że jednym z najbardziej zgubnych problemów jest to, że OS X jest instalowany z 32-bitową wersją Pythona, ale większość przeciętnych użytkowników (w tym ja) prawdopodobnie przeskakuje, aby zainstalować 64-bitową wersję MySQL. Zły ruch... usuń wersję 64-bitową, jeśli ją zainstalowałeś (instrukcje dotyczące tego skomplikowanego zadania są dostępne na SO tutaj ), a następnie pobierz i zainstaluj wersję 32-bitową (pakiet tutaj )
Istnieje wiele szczegółowych instrukcji budowania i instalowania bibliotek MySQLdb. Często mają subtelne różnice. To wydał mi się najbardziej popularny i zapewnił działające rozwiązanie. Odtworzyłem go z kilkoma poprawkami poniżej
Krok 0: Zanim zacznę, zakładam, że masz MySQL, Python i GCC zainstalowany na Macu.
Krok 1: Pobierz najnowszy adapter MySQL dla Pythona z SourceForge.
Krok 2: Rozpakuj pobrany pakiet:
tar xzvf MySQL-python-1.2.2.tar.gz
Krok 3: Wewnątrz folderu wyczyść pakiet:
sudo python setup.py clean
PARA DODATKOWYCH KROKÓW (z tego komentarza )
Krok 3b: Usuń wszystko z katalogu MySQL-python-1.2.2/build/* -- nie ufaj, że "python setup.py clean" zrobi to za Ciebie
Krok 3c: Usuń jajko w sekcji Users/$USER/.python-eggs
Krok 4: Pierwotnie wymagał edycji _mysql.c, ale teraz NIE JEST KONIECZNY. Wygląda na to, że społeczność MySQLdb naprawiła teraz ten błąd.
Krok 5: Utwórz dowiązanie symboliczne w lib, aby wskazać podkatalog o nazwie mysql. To jest miejsce, w którym szuka podczas kompilacji.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Krok 6: Edytuj plik setup_posix.py i zmień następujące
mysql_config.path ="mysql_config"
do
mysql_config.path ="/usr/local/mysql/bin/mysql_config"
Krok 7: W tym samym katalogu odbuduj pakiet (zignoruj ostrzeżenia z nim związane)
sudo python setup.py build
Krok 8: Zainstaluj pakiet i gotowe.
sudo python setup.py install
Krok 9: Sprawdź, czy to działa. Działa, jeśli możesz zaimportować MySQLdb.
python
>>> import MySQLdb
Krok 10: Jeśli przy próbie importu pojawi się błąd narzekający, że Library not loaded: libmysqlclient.18.dylib
kończące się na:Reason: image not found
musisz utworzyć jedno dodatkowe dowiązanie symboliczne, które jest:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Powinieneś wtedy być w stanie import MySQLdb
bez żadnych błędów.
Ostatnia czkawka polega na tym, że jeśli uruchomisz Pythona z katalogu kompilacji, pojawi się następujący błąd:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:Ostrzeżenie użytkownika:Moduł _mysql został już zaimportowany z /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, ale XXXX/MySQL-python-1.2.3c1 jest dodawany do sys.path
Jest to dość łatwe dla Google, ale aby zaoszczędzić Ci kłopotów, skończysz tutaj
(a może nie... niezbyt przyszłościowy adres URL) i zorientuj się, że musisz cd ..
poza katalogiem kompilacji i błąd powinien zniknąć.
Jak napisałem na górze, chciałbym, aby ta odpowiedź była uogólniona, ponieważ istnieje wiele innych konkretnych doświadczeń związanych z tym okropnym problemem. Zmień lub podaj własną, lepszą odpowiedź.