ec2 서버에서 django 를 실행하려고 했다. 하지만 방금 생성한 ubuntu에는 아무것도 설치된 것이 없다. 이럴땐 git과 freeze를 이용해서 패키지를 설치하면 된다.(평소 가상환경을 생성후 패키지 설치하기 귀찮을 때도 사용가능 할 것 같다)
$ pip freeze
asgiref==3.5.2
Django==4.1
mysqlclient==2.0.3
pip==23.0.1
setuptools==66.0.0
sqlparse==0.4.3
wheel==0.38.4
$ pip freeze > requirements.txt
- freeze의 내용을 requirements.txt에 담음
$ git pull origin main
$ pip install -r requirements.txt
freeze 명령어를 실행했을때
$ pip freeze
asgiref @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_63w24gebjz/croots/recipe/asgiref_1661287537348/work
Django @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_cdse89o2w5/croots/recipe/django_1661292537238/work
mysqlclient @ file:///Users/ktietz/demo/mc3/conda-bld/mysqlclient_1630566037602/work
sqlparse @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_73ubbfcjni/croot/sqlparse_1668793445223/work
위와 같은 내용으로 나와 가상서버에서 requirement.txt를 불러왔을때 에러가 발생했다.
$ pip list --format=freeze > ./requirements.txt
이 코드를 실행하면 freeze의 내용들이 변형됨
asgiref==3.5.2
Django==4.1
mysqlclient==2.0.3
pip==23.0.1
setuptools==66.0.0
sqlparse==0.4.3
wheel==0.38.4
$ pip install -r requirements.txt
github에서 pull한 내용의 requirements.txt 파일을 ubuntu 서버에 읽어서 패키지를 다운로드 하려던 도중 아래와 같은 error가 발생함
Collecting mysqlclient==2.0.3 (from -r requirements.txt (line 3))
Using cached mysqlclient-2.0.3.tar.gz (88 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [16 lines of output]
이 에러는 mysqlclient 패키지를 설치하는 동안 발생한 문제입니다. 에러 메시지를 보면 mysql_config와 mariadb_config 명령어를 찾을 수 없다는 내용이 나와 있습니다. 이는 필요한 MySQL 또는 MariaDB 개발 패키지가 시스템에 설치되어 있지 않아서 발생하는 문제입니다.
해당 개발 패키지를 설치해주면 됨
mysql을 사용한다면
$ sudo apt-get install libmysqlclient-dev
MariaDB를 사용한다면
$ sudo apt-get install libmariadb-dev