找不到 mysql_config 是因未安装 mysql 开发库,ubuntu/debian 用 sudo apt install libmysqlclient-dev,centos/rhel 8+ 用 dnf install mysql-devel,macos 需确保 brew install mysql 并正确链接,或通过环境变量指定路径后安装 mysqlclient。

找不到 mysql_config 怎么办
装 Python 的 mysqlclient 或编译 C 扩展时,报错 mysql_config not found,本质是 MySQL 开发头文件和库文件没装全,不是 pip 没装对。
- Ubuntu/Debian:运行
sudo apt install libmysqlclient-dev(注意不是mysql-client) - CentOS/RHEL 8+:用
sudo dnf install mysql-devel;RHEL 7 用yum install mysql-devel - macOS + Homebrew:确保已装
mysql(不是mysql@8这类别名),然后检查mysql_config是否在$PATH里——常见坑是装了mysql@5.7却没链接到默认路径,可用brew unlink mysql && brew link mysql@5.7修复
pip install mysqlclient 编译失败的三个高频原因
错误信息里带 fatal error: my_config.h: No such file 或 undefined reference to 'mysql_real_connect',基本锁定环境链路断了。
- 系统 MySQL 版本太新(比如 MySQL 8.4),但
mysqlclient当前稳定版(2.2.x)尚未完全适配——降级到 MySQL 8.0 或改用pymysql更省事 - Python 是 ARM64 架构(如 Apple Silicon Mac),但 MySQL 是 Intel 版本(通过 Rosetta 安装),导致架构不匹配;应统一用原生 ARM64 的
mysql(brew install mysql默认就是) - 虚拟环境里 PATH 没继承系统
mysql_config路径,临时解决:先运行export PATH="/usr/local/bin:$PATH"(macOS)或export PATH="/usr/bin:$PATH"(Linux),再 pip install
该选 mysqlclient 还是 PyMySQL
两者 API 兼容,但底层差很多:一个调 C 库,一个纯 Python 实现。
- 要性能、长连接、生产部署 → 优先
mysqlclient,但必须搞定开发库安装 - 只是本地脚本、CI 流水线跑测试、或不想碰编译 → 直接
pip install PyMySQL,零依赖,import pymysql后加一句pymysql.install_as_MySQLdb()就能兼容旧代码 - 注意:Django 默认用
MySQLdb,如果只装PyMySQL不调install_as_MySQLdb(),会报ImportError: No module named MySQLdb
Mac 上用 M1/M2 芯片装 mysqlclient 的真实路径
Homebrew 默认把 MySQL 装在 /opt/homebrew/opt/mysql,但 mysqlclient 编译时默认去 /usr/local 找,必须显式指定。
- 先确认路径:
brew --prefix mysql(输出类似/opt/homebrew/opt/mysql) - 再装:
pip install mysqlclient --global-option=build_ext --global-option="-I/opt/homebrew/opt/mysql/include" --global-option="-L/opt/homebrew/opt/mysql/lib" - 新版 pip 已弃用
--global-option,推荐改用环境变量:export PATH="/opt/homebrew/opt/mysql/bin:$PATH"+export LDFLAGS="-L/opt/homebrew/opt/mysql/lib"+export CPPFLAGS="-I/opt/homebrew/opt/mysql/include",然后再 pip install
mysql_config 都不在 PATH 里。










