安装mysqlclient遇ModuleNotFoundError及编译依赖错误求助
解决mysqlclient安装失败及
ModuleNotFoundError: No module named 'MySQLdb'问题 问题概述
尝试安装mysqlclient时先出现ModuleNotFoundError: No module named 'MySQLdb',执行pip install mysqlclient又报错编译wheel失败,提示无法找到有效的pkg-config名称,需手动指定MYSQLCLIENT_CFLAGS和MYSQLCLIENT_LDFLAGS环境变量,完整报错日志:
kanishka@kanishka-VivoBook-ASUSLaptop-X512FJ-X512FJ:~/Documents/Ceylone Soft/bcj_dev_back_end$ pip install mysqlclient Collecting mysqlclient Using cached mysqlclient-2.2.4.tar.gz (90 kB) Installing build dependencies ... done Getting requirements to build wheel ... error ERROR: Command errored out with exit status 1: command: '/home/kanishka/Documents/Ceylone Soft/bcj_dev_back_end/BuyChem/bin/python3' /tmp/tmp81chy8bh get_requires_for_build_wheel /tmp/tmpbjs9srac cwd: /tmp/pip-install-ulmsnxu3/mysqlclient Complete output (24 lines): Trying pkg-config --exists mysqlclient Command 'pkg-config --exists mysqlclient' returned non-zero exit status 1. Trying pkg-config --exists mariadb Command 'pkg-config --exists mariadb' returned non-zero exit status 1. Trying pkg-config --exists libmariadb Command 'pkg-config --exists libmariadb' returned non-zero exit status 1. Traceback (most recent call last): File "/tmp/tmp81chy8bh", line 280, in <module> main() File "/tmp/tmp81chy8bh", line 263, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "/tmp/tmp81chy8bh", line 114, in get_requires_for_build_wheel return hook(config_settings) File "/tmp/pip-build-env-csmolp15/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=['wheel']) File "/tmp/pip-build-env-csmolp15/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires self.run_setup() File "/tmp/pip-build-env-csmolp15/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 311, in run_setup exec(code, locals()) File "<string>", line 155, in <module> File "<string>", line 49, in get_config_posix File "<string>", line 28, in find_package_name Exception: Can not find valid pkg-config name. Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually ---------------------------------------- ERROR: Command errored out with exit status 1: '/home/kanishka/Documents/Ceylone Soft/bcj_dev_back_end/BuyChem/bin/python3' /tmp/tmp81chy8bh get_requires_for_build_wheel /tmp/tmpbjs9srac Check the logs for full command output.
解决步骤
1. 安装系统依赖(优先推荐)
错误核心是缺少MySQL/MariaDB开发库和pkg-config工具,先安装对应系统的依赖包:
Ubuntu/Debian 系列
sudo apt-get update sudo apt-get install python3-dev default-libmysqlclient-dev pkg-config
CentOS/RHEL 系列
sudo yum install python3-devel mysql-devel pkgconfig
Fedora
sudo dnf install python3-devel mysql-devel pkgconf
安装完依赖后,重新执行:
pip install mysqlclient
2. 手动指定环境变量(如果上述方法无效)
若系统依赖安装后仍报错,手动获取MySQL编译参数并设置环境变量:
先用pkg-config查找已安装的MySQL/MariaDB库(以libmariadb为例):
pkg-config --cflags libmariadb pkg-config --libs libmariadb
将输出结果作为环境变量传入pip命令:
MYSQLCLIENT_CFLAGS="$(pkg-config --cflags libmariadb)" MYSQLCLIENT_LDFLAGS="$(pkg-config --libs libmariadb)" pip install mysqlclient
若找不到对应pkg-config包,可直接指定MySQL安装路径(假设路径为/usr/local/mysql):
MYSQLCLIENT_CFLAGS="-I/usr/local/mysql/include" MYSQLCLIENT_LDFLAGS="-L/usr/local/mysql/lib -lmysqlclient" pip install mysqlclient
3. 验证安装
安装完成后,在Python环境中测试:
import MySQLdb
无报错则说明安装成功。
内容的提问来源于stack exchange,提问作者Kanishka Abeysinghe
相关产品推荐
相关产品推荐

