pip install 提示'pkg-config --exists mysqlclient' returned non-zero exit status 1.

pip 是 Python 的包管理工具,全称是 “Pip Installs Packages”,用于安装和管理 Python 的第三方库和依赖项。它是 Python 开发中非常重要的工具之一。

env

  • rockylinux9.5
  • python3.9.x

问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
pip install -r requirements.txt
...
Installing build dependencies ... done
Getting requirements to build wheel ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /tmp/tmp_yqq9uy8
cwd: /tmp/pip-install-06xek9be/mysqlclient_a0b056232e8240068368a753729b391e
Complete output (26 lines):
Trying pkg-config --exists mysqlclient
Command 'pkg-config --exists mysqlclient' returned non-zero exit status 1.
### 提示缺少编译mysqlclient需要mysql头文件、库文件
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.
Trying pkg-config --exists perconaserverclient
Command 'pkg-config --exists perconaserverclient' returned non-zero exit status 1.
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
main()
File "/usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
return hook(config_settings)
File "/tmp/pip-build-env-j773oav5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 331, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=[])
File "/tmp/pip-build-env-j773oav5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-j773oav5/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 317, in run_setup
exec(code, locals())
File "<string>", line 156, 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
...

解决

⚠️:根据当前系统版本来选择对应仓库

mariadb-repo

[root@4fe237db4a8e yum.repos.d]# cat mariadb.repo 
[mariadb]
name=mariadb
baseurl=https://mirrors.aliyun.com/mariadb/mariadb-10.5.28/yum/rhel9-amd64/
gpgcheck=0
enabled=1

dnf makecache && dnf search mariadb
    MariaDB-devel.x86_64 : MariaDB database development files

retry install

1.安装mysql开发库
dnf install -y MariaDB-devel

2.安装编译依赖
dnf install -y gcc make openssl-devel zlib-devel

3.安装mysqlclient
pip install wheel mysqlclient