Backend/Django

[django] ubuntu 20.0.4에 mysqlclient 모듈 설치하기

mirae.kwak 2022. 7. 24. 21:50

Python 가상환경 만들기

https://miraekwak.tistory.com/97

 

[Python] virtual env 설정

Virtual env venv를 사용하여 프로젝트 별 전용 가상공간을 생성하여 프로젝트 별로 독립된 파이썬 실행환경을 가질 수 있다. 여러 프로젝트의 python package를 섞이지 않게 관리할 수 있는 장점! 서로

miraekwak.tistory.com

 

문제

오라클 클라이언트 우분투 20.0.4 인스턴스에 장고 프로젝트를 실행하려고 requirement.txt파일에 있는 모듈을 설치하다가 mysqlclient를 설치하면서 에러가 발생했다. 다양한 에러를 겪어서 해결방안 정리! 

단순히 가상환경을 만든 후 모듈을 설치하려고 하면 다음과 같은 에러를 보게 된다.

error: "metadata generation failed"

 

해결방안

1. Python 설치 버전 확인

python -version
python3 -version

 

2. mysqlclient 설치를 위해 필요한 설치

위에서 언급한 에러 해결을 위해 다음을 설치한다.

sudo apt-get install python3.8-dev 
sudo apt-get install default-libmysqlclient-dev
sudo apt-get update # 이거 안하면 다음 명령어 안됨
sudo apt-get install build-essential
python -m pip install -U pip or python3 -m pip install -U pip 
pip3 install --upgrade setuptools

 

이때 python-dev의 경우 자신의 python version으로 설치한다. 

만약 이를 맞춰주지 않으면 다음과 같은 에러를 마주하게 될 것!

(Error)-command 'x86_64-linux-gnu-gcc' failed with exit status 1
error: legacy-install-failure

사실 이 에러에 대해 찾아봤을 때 python버전을 낮추라는 말이 있어서 3.9 -> 3.8로 변경했는데 이건 별로 소용 없는듯...

3.8 이상에서만 가능한 모듈이 있어서 더 이상 낮추지는 못했다. 

 

위의 명령어를 실행했음에도 같은 에러가 난다면 다음을 실행한다.

python3 -m pip install --upgrade pip
pip install --upgrade wheel
pip install --upgrade setuptools
pip install gensim

 

3. mysqlclient 설치

pip install mysqlclient

 

이때 갑자기 잘되던 pip 모듈이 없다는 에러가 나타날 수 있다.

"ModuleNotFoundError: No module named 'pip' in Python"

이럴때는 pip를 가상환경을 만들었을 때의 pip로 되돌려주는 명령어를 실행한다.

python3 -m ensurepip --upgrade

 

이후에 다시 명령어를 실행하면 설치 완료!

 

 


참조

:[metadata 어쩌구 에러 해결]

:[build-essential 설치 실패 해결]https://stackoverflow.com/questions/6486449/using-sudo-apt-get-install-build-essentials

:[python 버전 낮추기]https://sogogi1000inbun.tistory.com/m/91

:[pip 되돌리기]https://bobbyhadz.com/blog/python-no-module-named-pip

:[leggacy-fail-error 해결] https://codecary.com/error-legacy-install-failure-in-python/

:[python-dev 버전 지정]