Amazon linux 에서 발생한 일입니다. python38 로 mysql 를 설치하던 도중 pip install mysql 명령을 할 경우 아래와 같은 메시지가 나왔습니다.
문제
[ec2-user@datings cmd]$ pip install mysql
Defaulting to user installation because normal site-packages is not writeable
Collecting mysql
Using cached mysql-0.0.3-py3-none-any.whl (1.2 kB)
Collecting mysqlclient (from mysql)
Using cached mysqlclient-2.2.0.tar.gz (89 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [22 lines of output]
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.
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
File "/tmp/pip-build-env-y09z1qn6/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 355, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
File "/tmp/pip-build-env-y09z1qn6/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 325, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-y09z1qn6/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 341, in run_setup
exec(code, locals())
File "<string>", line 154, in <module>
File "<string>", line 48, in get_config_posix
File "<string>", line 27, in find_package_name
Exception: Can not find valid pkg-config name.
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
[ec2-user@datings cmd]$
HTML
복사
해결 방안
Amazon Linux 기준에서 MySQL Python 클라이언트 라이브러리를 설치하는 단계를 더 자세히 설명하겠습니다.
1.
MySQL Client 라이브러리 설치:
sudo yum install mysql-devel
HTML
복사
2.
Amazon Linux 기준으로 MySQL Python 클라이언트 라이브러리를 설치하려면 mysql-devel 패키지를 사용해야 합니다. 아래 명령어로 이 패키지를 설치할 수 있습니다:
3.
MySQL Client 라이브러리 위치 지정 (* 중요)경로가 Amazon Linux에서 다를 수 있으므로 정확한 경로를 확인하십시오. Amazon Linux 2를 사용하는 경우 이 경로들은 보통 /usr/include/mysql와 /usr/lib64/mysql에 있습니다.
export MYSQLCLIENT_CFLAGS="-I/usr/include/mysql"
export MYSQLCLIENT_LDFLAGS="-L/usr/lib64/mysql"
HTML
복사
4.
MySQL Client 라이브러리의 위치를 pip에게 알려주어야 합니다. 환경 변수를 설정하여 라이브러리의 경로를 지정합니다. Amazon Linux에서는 아래와 같이 환경 변수를 설정할 수 있습니다:
5.
MySQL Python 클라이언트 라이브러리 설치:위 명령을 실행하면 MySQL Python 클라이언트 라이브러리가 설치되고 사용할 준비가 됩니다.
pip install mysql
6.
이제 MySQL Python 클라이언트 라이브러리를 설치할 수 있습니다. pip 명령을 사용하여 다음과 같이 설치합니다:
이제 Amazon Linux에서 MySQL Python 클라이언트 라이브러리를 정상적으로 설치하고 사용할 수 있어야 합니다. 필요한 라이브러리와 환경 변수를 올바르게 설정하면 문제가 해결될 것입니다.
결과 (성공)
[root@datings cmd]# pip install mysql
Collecting mysql
Downloading mysql-0.0.3-py3-none-any.whl (1.2 kB)
Collecting mysqlclient (from mysql)
Using cached mysqlclient-2.2.0.tar.gz (89 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (pyproject.toml) ... done
Created wheel for mysqlclient: filename=mysqlclient-2.2.0-cp38-cp38-linux_x86_64.whl size=118309 sha256=a1e1e50bc802885a4334cbc6710539f79434978c9a22ae75f4e82968765cbcfd
Stored in directory: /root/.cache/pip/wheels/c6/45/60/65ff711ddb1059e530228ebc5ddf10289427af7bc77850923d
Successfully built mysqlclient
Installing collected packages: mysqlclient, mysql
Successfully installed mysql-0.0.3 mysqlclient-2.2.0
Shell
복사