อัปเดตสำหรับผู้ที่ใช้ Python3:
คุณสามารถใช้conda install mysqlclient
เพื่อติดตั้งไลบรารีที่จำเป็นในการใช้ MySQLdb ตามที่มีอยู่ในปัจจุบัน คำถามดังนั้นต่อไปนี้เป็นเบาะแสที่เป็นประโยชน์: งูหลาม 3 ImportError: ไม่มีโมดูลชื่อ 'ConfigParser' การติดตั้ง mysqlclient จะติดตั้ง mysqlclient, mysql-connector และ llvmdev (อย่างน้อยก็ติดตั้ง 3 ไลบรารีนี้ในเครื่องของฉัน)
นี่คือเรื่องราวของประสบการณ์การเที่ยวเตร่ของฉันกับปัญหานี้ ชอบที่จะเห็นการแก้ไขหรือสรุปทั่วไปหากคุณมีประสบการณ์ที่ดีขึ้นเกี่ยวกับปัญหานี้ ... ใช้เวทย์มนตร์ SO นั้นเล็กน้อย
หมายเหตุ: ความคิดเห็นในย่อหน้าถัดไปนำไปใช้กับ Snow Leopard แต่ไม่ใช่กับ Lion ซึ่งดูเหมือนว่าจะต้องใช้ MySQL 64 บิต
ปิดครั้งแรกที่ผู้เขียน (ยัง?) ของ MySQLdb กล่าวว่าที่นี่ที่หนึ่งของปัญหาที่อันตรายที่สุดคือการที่ OS X มาติดตั้งกับรุ่น 32 บิตของงูหลาม แต่ Joes เฉลี่ยมากที่สุด (รวมตัวเอง) อาจจะข้ามไปติดตั้งรุ่น 64 บิต ของ MySQL ย้ายไม่ดี ... ลบเวอร์ชัน 64 บิตหากคุณติดตั้ง (คำแนะนำเกี่ยวกับงานที่ยุ่งเหยิงนี้มีอยู่ใน SO ที่นี่ ) จากนั้นดาวน์โหลดและติดตั้งเวอร์ชัน 32 บิต (แพ็คเกจที่นี่ )
มีหลายขั้นตอนในการสร้างและติดตั้งไลบรารี MySQLdb พวกเขามักมีความแตกต่างที่ลึกซึ้ง สิ่งนี้ดูเหมือนจะเป็นที่นิยมมากที่สุดสำหรับฉันและเป็นวิธีแก้ปัญหาที่ใช้งานได้ ฉันได้ทำซ้ำโดยมีการแก้ไขสองสามรายการด้านล่าง
ขั้นตอนที่ 0:
ก่อนที่ฉันจะเริ่มฉันคิดว่าคุณมี MySQL, Python และGCCติดตั้งบนเครื่อง Mac
ขั้นตอนที่ 1:
ดาวน์โหลดMySQL for Python adapter ล่าสุดจาก SourceForge
ขั้นตอนที่ 2:
แตกแพ็คเกจที่ดาวน์โหลดมา:
tar xzvf MySQL-python-1.2.2.tar.gz
ขั้นตอนที่ 3:
ภายในโฟลเดอร์ทำความสะอาดแพ็คเกจ:
sudo python setup.py clean
สองขั้นตอนพิเศษ (จากความคิดเห็นนี้ )
ขั้นตอนที่ 3b:
ลบทุกอย่างภายใต้ไดเรกทอรี MySQL-python-1.2.2 / build / * ของคุณ - อย่าเชื่อว่า "python setup.py clean" จะทำเพื่อคุณ
ขั้นตอนที่ 3c:
นำไข่ออกภายใต้ 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
คุณต้องสร้าง symlink เพิ่มเติมหนึ่งรายการซึ่ง ได้แก่ :
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
จากนั้นคุณจะสามารถทำได้import MySQLdb
โดยไม่มีข้อผิดพลาดใด ๆ
อาการสะอึกสุดท้ายคือถ้าคุณเริ่ม Python จากไดเร็กทอรี build คุณจะได้รับข้อผิดพลาดนี้:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: โมดูล _mysql ได้รับการนำเข้าแล้วจาก /Library/Python/2.5/ site-package / 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 ..
ออกจากไดเร็กทอรีบิวด์และข้อผิดพลาดควรหายไป
ดังที่ฉันเขียนไว้ด้านบนฉันชอบที่จะเห็นคำตอบนี้โดยทั่วไปเนื่องจากมีประสบการณ์เฉพาะอื่น ๆ อีกมากมายเกี่ยวกับปัญหาที่น่ากลัวนี้ แก้ไขไปหรือให้คำตอบของคุณเองดีกว่า