Cập nhật cho những người sử dụng Python3: Bạn chỉ cần sử dụng conda install mysqlclient
để cài đặt các thư viện cần thiết để sử dụng MySQLdb vì nó hiện đang tồn tại. Câu hỏi SO sau đây là một manh mối hữu ích: Python 3 ImportError:Không có mô-đun nào có tên 'ConfigParser'
. Cài đặt mysqlclient sẽ cài đặt mysqlclient, mysql-connector và llvmdev (ít nhất, nó đã cài đặt 3 thư viện này trên máy của tôi).
Đây là câu chuyện về kinh nghiệm lan man của tôi với vấn đề này. Rất thích xem nó được chỉnh sửa hoặc tổng quát nếu bạn có kinh nghiệm tốt hơn về vấn đề này ... hãy áp dụng một chút phép thuật SO đó.
Lưu ý:Nhận xét trong đoạn tiếp theo áp dụng cho Snow Leopard, nhưng không áp dụng cho Lion, có vẻ như yêu cầu MySQL 64 bit
Trước hết, tác giả (vẫn là?) Của MySQLdb nói tại đây rằng một trong những vấn đề nguy hiểm nhất là OS X được cài đặt với phiên bản 32 bit của Python, nhưng hầu hết các gia nhập trung bình (bao gồm cả tôi) có thể chuyển sang cài đặt phiên bản 64 bit của MySQL. Di chuyển xấu ... hãy xóa phiên bản 64 bit nếu bạn đã cài đặt nó (hướng dẫn về tác vụ khó sử dụng này có sẵn trên SO tại đây ), sau đó tải xuống và cài đặt phiên bản 32 bit (gói tại đây )
Có rất nhiều hướng dẫn từng bước về cách xây dựng và cài đặt các thư viện MySQLdb. Chúng thường có sự khác biệt tinh tế. Điều này dường như phổ biến nhất đối với tôi và cung cấp giải pháp hiệu quả. Tôi đã tái tạo nó với một vài chỉnh sửa bên dưới
Bước 0: Trước khi bắt đầu, tôi giả sử rằng bạn có MySQL, Python và GCC được cài đặt trên mac.
Bước 1: Tải xuống bộ điều hợp MySQL cho Python mới nhất từ SourceForge.
Bước 2: Giải nén gói đã tải xuống của bạn:
tar xzvf MySQL-python-1.2.2.tar.gz
Bước 3: Bên trong thư mục, làm sạch gói:
sudo python setup.py clean
CẤU TRÚC CÁC BƯỚC THÊM, (từ nhận xét này )
Bước 3b: Xóa mọi thứ trong thư mục MySQL-python-1.2.2 / build / * của bạn - không tin tưởng "python setup.py clean" sẽ làm điều đó cho bạn
Bước 3c: Xóa quả trứng trong Người dùng / $ USER / .python-egg
Bước 4: Ban đầu yêu cầu chỉnh sửa _mysql.c, nhưng giờ KHÔNG CẦN THIẾT. Cộng đồng MySQLdb dường như đã sửa lỗi này ngay bây giờ.
Bước 5: Tạo một liên kết tượng trưng dưới lib để trỏ đến một thư mục con có tên là mysql. Đây là nơi nó tìm kiếm trong quá trình biên dịch.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Bước 6: Chỉnh sửa setup_posix.py và thay đổi các điều sau
mysql_config.path ="mysql_config"
đến
mysql_config.path ="/ usr / local / mysql / bin / mysql_config"
Bước 7: Trong cùng một thư mục, hãy xây dựng lại gói của bạn (bỏ qua các cảnh báo đi kèm với nó)
sudo python setup.py build
Bước 8: Cài đặt gói và bạn đã hoàn tất.
sudo python setup.py install
Bước 9: Kiểm tra xem nó có hoạt động không. Nó hoạt động nếu bạn có thể nhập MySQLdb.
python
>>> import MySQLdb
Bước 10: Nếu khi cố gắng nhập, bạn nhận được lỗi phàn nàn rằng Library not loaded: libmysqlclient.18.dylib
kết thúc bằng:Reason: image not found
bạn cần tạo một liên kết biểu tượng bổ sung:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Sau đó, bạn sẽ có thể import MySQLdb
không có bất kỳ lỗi nào.
Tuy nhiên, một trục trặc cuối cùng là nếu bạn khởi động Python từ thư mục xây dựng, bạn sẽ gặp lỗi này:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:Module _mysql đã được nhập từ /Library/Python/2.5/ site-package / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc, nhưng XXXX / MySQL-python-1.2.3c1 đang được thêm vào sys.path
Điều này khá dễ dàng với Google, nhưng để tránh rắc rối, bạn sẽ kết thúc tại đây
(hoặc có thể không ... không phải là một URL đặc biệt chống lại được trong tương lai) và tìm ra rằng bạn cần cd ..
ra khỏi thư mục xây dựng và lỗi sẽ biến mất.
Như tôi đã viết ở trên cùng, tôi muốn xem câu trả lời này được khái quát hóa, vì có rất nhiều trải nghiệm cụ thể khác về vấn đề khủng khiếp này ngoài kia. Chỉnh sửa hoặc đưa ra câu trả lời hay hơn của riêng bạn.