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/