Pembaruan bagi mereka yang menggunakan Python3:
Anda cukup menggunakan conda install mysqlclient
untuk menginstal pustaka yang diperlukan untuk menggunakan MySQLdb seperti yang saat ini ada. Pertanyaan SO berikut adalah petunjuk yang berguna: Python 3 ImportError: Tidak ada modul bernama 'ConfigParser' . Menginstal mysqlclient akan menginstal mysqlclient, mysql-connector, dan llvmdev (setidaknya, 3 pustaka ini diinstal di komputer saya).
Inilah kisah pengalaman bertele-tele saya dengan masalah ini. Akan sangat senang melihatnya diedit atau digeneralisasikan jika Anda memiliki pengalaman yang lebih baik tentang masalah ini ... terapkan sedikit keajaiban SO itu.
Catatan: Komentar di paragraf berikutnya diterapkan ke Snow Leopard, tetapi tidak untuk Lion, yang tampaknya memerlukan MySQL 64-bit
Pertama, penulis (masih?) MySQLdb mengatakan di sini bahwa salah satu masalah yang paling merusak adalah bahwa OS X diinstal dengan Python versi 32 bit, tetapi kebanyakan rata-rata orang (termasuk saya) mungkin melompat untuk menginstal versi 64 bit dari MySQL. Langkah buruk ... hapus versi 64 bit jika Anda telah menginstalnya (petunjuk tentang tugas fiddly ini tersedia di SO di sini ), lalu unduh dan instal versi 32 bit (paket di sini )
Ada banyak langkah demi langkah tentang cara membangun dan menginstal pustaka MySQLdb. Mereka sering kali memiliki perbedaan yang halus. Ini tampaknya yang paling populer bagi saya, dan memberikan solusi yang berhasil. Saya telah memperbanyaknya dengan beberapa pengeditan di bawah
Langkah 0:
Sebelum saya mulai, saya berasumsi bahwa Anda telah menginstal MySQL, Python, dan GCC di mac.
Langkah 1:
Unduh adaptor MySQL untuk Python terbaru dari SourceForge.
Langkah 2:
Ekstrak paket yang Anda unduh:
tar xzvf MySQL-python-1.2.2.tar.gz
Langkah 3:
Di dalam folder, bersihkan paket:
sudo python setup.py clean
PASANGAN LANGKAH TAMBAHAN, (dari komentar ini )
Langkah 3b:
Hapus semua yang ada di direktori MySQL-python-1.2.2 / build / * - jangan percaya "python setup.py clean" untuk melakukannya untuk Anda
Langkah 3c:
Hapus telur di bawah Users / $ USER / .python-eggs
Langkah 4:
Awalnya diperlukan pengeditan _mysql.c, tetapi sekarang TIDAK PERLU LAGI. Komunitas MySQLdb tampaknya telah memperbaiki bug ini sekarang.
Langkah 5:
Buat tautan simbolik di bawah lib untuk mengarah ke sub-direktori bernama mysql. Ini adalah tempat yang dicari selama kompilasi.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Langkah 6:
Edit setup_posix.py dan ubah yang berikut ini
mysql_config.path = "mysql_config"
untuk
mysql_config.path = "/ usr / local / mysql / bin / mysql_config"
Langkah 7:
Di direktori yang sama, buat kembali paket Anda (abaikan peringatan yang menyertainya)
sudo python setup.py build
Langkah 8:
Instal paket dan Anda selesai.
sudo python setup.py install
Langkah 9:
Uji apakah berfungsi. Ini berfungsi jika Anda dapat mengimpor MySQLdb.
python
>>> import MySQLdb
Langkah 10:
Jika saat mencoba mengimpor Anda menerima pesan kesalahan yang Library not loaded: libmysqlclient.18.dylib
diakhiri dengan: Reason: image not found
Anda perlu membuat satu symlink tambahan yaitu:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Anda kemudian harus bisa melakukannya import MySQLdb
tanpa kesalahan.
Satu masalah terakhir adalah jika Anda memulai Python dari direktori build Anda akan mendapatkan kesalahan ini:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: Module _mysql sudah diimpor dari /Library/Python/2.5/ site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc, tetapi XXXX / MySQL-python-1.2.3c1 sedang ditambahkan ke sys.path
Ini cukup mudah bagi Google, tetapi untuk menyelamatkan Anda dari masalah, Anda akan berakhir di sini (atau mungkin tidak ... bukan URL yang sangat tahan masa depan) dan mencari tahu bahwa Anda perlu cd ..
keluar dari direktori build dan kesalahan akan hilang.
Seperti yang saya tulis di bagian atas, saya ingin melihat jawaban ini digeneralisasikan, karena ada banyak pengalaman spesifik lain dari masalah mengerikan ini di luar sana. Sunting, atau berikan jawaban Anda sendiri yang lebih baik.