Back-End/AWS

[EC2] ERROR: No matching distribution found for mysqlclient 해결 방법 (EC2 mysql 패키지 설치 오류)

현기 2023. 6. 6. 06:49
Collecting mysqlclient==2.1.1
  Downloading mysqlclient-2.1.1.tar.gz (88 kB)
     |████████████████████████████████| 88 kB 12.7 MB/s            
  Preparing metadata (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/setup.py'"'"'; __file__='"'"'/tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-d472glni
       cwd: /tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/
  Complete output (15 lines):
  /bin/sh: line 1: mysql_config: command not found
  /bin/sh: line 1: mariadb_config: command not found
  /bin/sh: line 1: mysql_config: command not found
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/setup.py", line 15, in <module>
      metadata, options = get_config()
    File "/tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/setup_posix.py", line 70, in get_config
      libs = mysql_config("libs")
    File "/tmp/pip-install-zlofzpjl/mysqlclient_1493e3f2b2d44ad18f94ac30563e9c05/setup_posix.py", line 31, in mysql_config
      raise OSError("{} not found".format(_mysql_config_path))
  OSError: mysql_config not found
  mysql_config --version
  mariadb_config --version
  mysql_config --libs
  ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/50/5f/eac919b88b9df39bbe4a855f136d58f80d191cfea34a3dcf96bf5d8ace0a/mysqlclient-2.1.1.tar.gz#sha256=828757e419fb11dd6c5ed2576ec92c3efaa93a0f7c39e263586d1ee779c3d782 (from https://pypi.org/simple/mysqlclient/) (requires-python:>=3.5). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement mysqlclient==2.1.1 (from versions: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11rc1, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.4.0rc1, 1.4.0rc2, 1.4.0rc3, 1.4.0, 1.4.1, 1.4.2, 1.4.2.post1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.1.0rc1, 2.1.0, 2.1.1, 2.2.0rc1)
ERROR: No matching distribution found for mysqlclient==2.1.1

 

AWS EC2에서 Flask를 배포하던 중 패키지 설치 에러가 발생했습니다.

mysqlclient이 문제였습니다.

 

mysqlclient가 정상적으로 설치되지 않으면서 에러 메시지를 보내고 있습니다.

잘 설치하고 구동했던 게 갑자기 안 돼서 이것저것 찾아보고 엄청난 삽질 끝에 해결했습니다. 😥

 

 

🧾삽질 기록

1. 스택 오버플로우 검색하며 여러 명령어 테스트 (실패)

2. 가상 환경에서 패키지 구성 (실패) 

3. EC2 객체 제거 후 다시 생성 (실패)

4. 커스텀 패키지 저장소 추가하기 (실패)

 

5. EL9 버전의 레포지토리와 mysql-community-server

설치 후 필요한 라이브러리 설치 (성공)

 

❗ 해결 과정 중 발생한 에러들
no match for argument: mysql-devel error: unable to find a match: mysql-devel

Collecting Flask-MySQLdb==1.0.1 Using cached Flask-MySQLdb-1.0.1.tar.gz (4.3 kB) Preparing metadata (setup.py) ... done

ERROR: Could not find a version that satisfies the requirement mysqlclient==2.1.1

ERROR: No matching distribution found for mysqlclient

 

 



📝해결 방법

 

이런 패키지 충돌이 발생하는 원인은 Amazon Linux에서 지원하지 않는 버전의 레파지토리를 설치했기 때문입니다. Amazon Linux 2023의 경우 EL9 버전의 레파지토리와 mysql-community-sever를 설치해야합니다.

sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf install mysql-community-server

 

mysqlclient를 사용하기 위해 필요한 라이브러리를 순서대로 설치합니다.

원래 에러가 발생하던 구간이었는데, 위에 있는 명령어로 해결이 되었습니다.

이후 다시 mysqlclient를 설치합니다. 끝!

#필요한 종속성 설치
sudo yum install python3-devel mysql-devel gcc

#라이브러리 설치하기
pip3 install -r requirements.txt

or

pip3 install mysqlclient

 


 


참고 문헌 : 

https://dev.classmethod.jp/articles/ec2-mysql-install-confilicting-requests-error-kr/