經典報錯 ImportError: No module named MySQLdb 通常因缺少 mysqlclient 或 MySQL-python 驅動。本文提供全平台、多版本兼容的安裝方案。
python -c "import MySQLdb"
# 無報錯即已安裝
sudo apt-get update
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient
sudo yum install python3-devel mysql-devel gcc
pip install mysqlclient
brew install mysql-connector-c
pip install mysqlclient
pip install mysqlclient
# 或下載預編譯 whl:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
wget https://sourceforge.net/projects/mysql-python/files/latest/download
tar -xzf MySQL-python-*.tar.gz
cd MySQL-python-*
python setup.py build
python setup.py install
EnvironmentError: mysql_config not found
# 1. 確認 mysql_config 路徑 which mysql_config # 輸出如 /usr/local/mysql/bin/mysql_config # 2. 修改 setup_posix.py vi setup_posix.py # 找到 mysql_config.path = "mysql_config" # 改為絕對路徑 mysql_config.path = "/usr/local/mysql/bin/mysql_config" # 3. 重新編譯安裝 python setup.py build python setup.py install
pip install pymysql
# 代碼中兼容 MySQLdb API
import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb # 現在可用
# Dockerfile
RUN apt-get update && apt-get install -y default-libmysqlclient-dev gcc \
&& pip install mysqlclient
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='root', passwd='pass', db='test')
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print(cursor.fetchone())