macOS安装Python MySQLdb
0. 参考
Mac OS X - EnvironmentError: mysql_config not found
Error installing mysql-python: library not found for -lssl
1. 背景
import MySQLdb
出错:
ImportError: No module named MySQLdb
1. 解决步骤
1.1 安装mysql
brew install mysql
把以下export加到~/.bash_profile
export PATH="$PATH:/usr/local/bin/mysql"
1.2 安装pip
sudo easy_install pip
1.3 安装MySQL-Python
sudo pip install MySQL-Python
2. 番外
如果依照上述方法,安装过程还出现如下错误,那可能是因为brew改了MySQL的版本导致的。
_mysql.c:29:10: fatal error: 'my_config.h' file not found
可以通过安装旧版本MySQL的方法处理,如下:
brew uninstall mysql # 卸载新版本mysql
brew install mysql@5.7 # 安装旧版本mysql
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
sudo pip install MySQL-Python
3. 番外macOS Catalina 10.15.3
更新到最新版本之后,发现上述方法已经失效,网上说的安装mysql-connector-c也不可以,经过尝试之后,直接安装mysql和mysqlclient就可以了,而非之前的mysql-python。安装mysqlclient会有以下报错,需要加上编译选项:
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'cc' failed with exit status 1
具体如下:
brew install mysql
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
4. 番外macOS big sur
python3也是可以用MySQLdb的,没必要改用pymysql。
但发现新版本3的方法执行又不行了,会报ld: library not found for -lzstd,但是zstd是已经安装的
解决思路是看一下zstd的安装路径在哪里,pip install的时候指定一下。
具体如下:
brew install mysql
brew list zstd(找到lib的路径)
LDFLAGS=-L/opt/homebrew/Cellar/zstd/1.5.0/lib pip install mysqlclient