Aktualizacja dla tych, którzy używają Python3:
Możesz po prostu użyć conda install mysqlclient
do zainstalowania bibliotek wymaganych do korzystania z MySQLdb, tak jak obecnie. 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 zainstalował te 3 biblioteki na moim komputerze).
Oto opowieść o moim chaotycznym doświadczeniu z tym problemem. Chciałbym, aby to zostało zredagowane lub uogólnione, jeśli masz lepsze doświadczenie w tym problemie ... zastosuj trochę tej TAK magii.
Uwaga: Komentarze w następnym akapicie dotyczą systemu Snow Leopard, ale nie Lion, który wydaje się wymagać 64-bitowego MySQL
Po pierwsze, autor (wciąż?) 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 joesów (łącznie ze mną) prawdopodobnie przeskakuje, aby zainstalować wersję 64-bitową MySQL. Zły ruch ... usuń wersję 64-bitową, jeśli ją zainstalowałeś (instrukcje dotyczące tego skrzypiącego zadania są dostępne na SO tutaj ), a następnie pobierz i zainstaluj wersję 32-bitową (pakiet tutaj )
Istnieje wiele instrukcji krok po kroku, jak zbudować i zainstalować biblioteki MySQLdb. Często mają subtelne różnice. To mi się to najbardziej popularne i zapewniło działające rozwiązanie. Powtórzyłem go z kilkoma zmianami poniżej
Krok 0:
Zanim zacznę, zakładam, że masz zainstalowane MySQL, Python i GCC na komputerze Mac.
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 "python setup.py clean", aby zrobić to za Ciebie
Krok 3c:
Usuń jajko w sekcji Users / $ USER / .python-eggs
Krok 4:
Początkowo wymagana edycja pliku _mysql.c, ale teraz NIE JEST JUŻ KONIECZNA. Wygląda na to, że społeczność MySQLdb naprawiła teraz ten błąd.
Krok 5:
Utwórz łącze symboliczne w bibliotece lib, aby wskazywało podkatalog o nazwie mysql. Właśnie tego 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, które się z nim wiążą)
sudo python setup.py build
Krok 8:
Zainstaluj pakiet i gotowe.
sudo python setup.py install
Krok 9:
Sprawdź, czy działa. Działa, jeśli możesz zaimportować MySQLdb.
python
>>> import MySQLdb
Krok 10:
Jeśli podczas próby importu pojawi się błąd informujący, że Library not loaded: libmysqlclient.18.dylib
kończy się na: Reason: image not found
musisz utworzyć jedno dodatkowe łącze 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 błędów.
Ostatnim problemem jest to, że jeśli uruchomisz Pythona z katalogu kompilacji, otrzymasz ten błąd:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: 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
To jest 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 zorientujesz się, że musiszcd ..
wyjść z katalogu kompilacji, a 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. Edytuj dalej lub podaj własną, lepszą odpowiedź.