여행
베트남

[Python] Python38 의 pip 에서 Mysql 이 설치 안될 경우

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
복사