Актуализация за тези, които използват Python3: Можете просто да използвате conda install mysqlclient
за да инсталирате библиотеките, необходими за използване на MySQLdb, както съществува в момента. Следният въпрос SO беше полезна улика:Python 3 ImportError:Няма модул с име „ConfigParser“
. Инсталирането на mysqlclient ще инсталира mysqlclient, mysql-connector и llvmdev (поне инсталира тези 3 библиотеки на моята машина).
Ето историята на моя безсмислен опит с този проблем. Ще се радвам да го видя редактиран или обобщен, ако имате по-добър опит с проблема... приложете малко от тази ТАКА магия.
Забележка:Коментарите в следващия параграф се прилагат за Snow Leopard, но не и за Lion, който изглежда изисква 64-битов MySQL
Първо, авторът (все още?) на MySQLdb казва тук че един от най-пагубните проблеми е, че OS X идва инсталирана с 32-битова версия на Python, но повечето обикновени играчи (включително и аз) вероятно скачат да инсталират 64-битовата версия на MySQL. Лош ход... премахнете 64-битовата версия, ако сте я инсталирали (инструкции за тази трудна задача са налични на SO тук ), след което изтеглете и инсталирайте 32-битовата версия (пакет тук )
Има множество стъпка по стъпка как да изградите и инсталирате MySQLdb библиотеки. Те често имат фини разлики. Това ми се стори най-популярен и осигури работното решение. Възпроизвеждах го с няколко редакции по-долу
Стъпка 0: Преди да започна, предполагам, че имате MySQL, Python и GCC инсталиран на Mac.
Стъпка 1: Изтеглете най-новия MySQL за Python адаптер от SourceForge.
Стъпка 2: Разархивирайте изтегления пакет:
tar xzvf MySQL-python-1.2.2.tar.gz
Стъпка 3: Вътре в папката почистете пакета:
sudo python setup.py clean
ДВОЙКА ДОПЪЛНИТЕЛНИ СТЪПКИ, (от този коментар )
Стъпка 3б: Премахнете всичко във вашата MySQL-python-1.2.2/build/* директория - не се доверявайте на "python setup.py clean" да го направи вместо вас
Стъпка 3в: Премахнете яйцето под Users/$USER/.python-eggs
Стъпка 4: Първоначално се изискваше редактиране на _mysql.c, но сега ВЕЧЕ НЕ Е НЕОБХОДИМО. Изглежда общността на MySQLdb вече е поправила този бъг.
Стъпка 5: Създайте символна връзка под lib, която да сочи към поддиректория, наречена mysql. Това е мястото, където той търси по време на компилацията.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Стъпка 6: Редактирайте setup_posix.py и променете следното
mysql_config.path ="mysql_config"
до
mysql_config.path ="/usr/local/mysql/bin/mysql_config"
Стъпка 7: В същата директория изградете отново вашия пакет (игнорирайте предупрежденията, които идват с него)
sudo python setup.py build
Стъпка 8: Инсталирайте пакета и сте готови.
sudo python setup.py install
Стъпка 9: Тествайте дали работи. Работи, ако можете да импортирате MySQLdb.
python
>>> import MySQLdb
Стъпка 10: Ако при опит за импортиране получите грешка, която се оплаква, че Library not loaded: libmysqlclient.18.dylib
завършваща с:Reason: image not found
трябва да създадете една допълнителна символна връзка, която е:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
След това трябва да можете да import MySQLdb
без никакви грешки.
Един последен проблем обаче е, че ако стартирате Python от директорията за изграждане, ще получите тази грешка:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:Модул _mysql вече е импортиран от /Library/2/Python site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, но XXXX/MySQL-python-1.2.3c1 се добавя към sys.path
Това е доста лесно за Google, но за да ви спести неприятностите, ще стигнете тук
(или може би не... не е особено надежден URL адрес) и разберете, че трябва да cd ..
извън директорията за компилиране и грешката трябва да изчезне.
Както написах в горната част, бих искал да видя този отговор обобщен, тъй като има много други специфични преживявания с този ужасен проблем. Редактирайте или дайте свой собствен, по-добър отговор.