Mac OS에 python3 설치, 가상환경에 Django 설치하기, 동일한 가상환경 복사해 만들기
https://tiny-immj.tistory.com/122
Mac OS에 python3, 가상환경에 Django 설치하기, 가상환경 동일하게 구성하기
파이썬에서 웹 개발할 일이 생겼습니다! 저는 데스크탑은 윈도우, 노트북은 맥을 사용하고 있기 때문에 맥에 먼저 세팅을 해주려 합니다올드 맥북이라 벽돌 되는 게 무서워서 업데이트를 잘 안
tiny-immj.tistory.com
프로젝트 용으로 Python3의 가상환경에 Django를 세팅해 보고, mysqlclient 설치와 MySQL 환경변수를 세팅해주려 합니다
가상환경 구축
이거 꼭 해야할까요?
파이썬에서는 외부 라이브러리를 많이 사용하는데, 서로 충돌할 위험이 높습니다
그래서 실제 프로젝트를 개발하는 경우에는 가상환경을 구성하는 것이 필수입니다!
1. 프로젝트 생성
먼저 프로젝트 폴더를 생성하기 위해 터미널을 열어줍니다
프로젝트를 관리하기 위해 python3 폴더를 생성해 이동해 줍니다
$ mkdir python3
$ cd python3
이제 python3 폴더에 django_project 라는 이름으로 프로젝트를 생성!
python3 $ mkdir django_project

여기까지 가상환경 구축을 위한 준비가 완료되었습니다
2. 가상환경 구축과 활성화시키기
① 가상환경 구축
venv라는 이름의 가상환경을 만들어보겠습니다
$ python3 -m venv '가상환경 이름'
django_project 폴더로 이동하여, venv 라는 이름의 가상환경을 구축한다
python3 $ cd django_project
django_project $ python3 -m venv venv
② 가상환경 활성화
가상환경을 활성화 시키는 방법은 가상환경 'venv' 폴더로 이동해 활성화 명령을 내리면 됩니다
django_project $ cd venv
venv $ source bin/activate
가상환경 활성화 = 가상환경 안으로 진입한다
가상환경 내에 있다는 것을 알려주기 위해 프롬프트에 (venv) 표시가 나타납니다

3. 가상환경에 Django 설치와 MySQL 연결
● Django : 파이썬 웹 프레임워크로 쉽고 빠른 장점을 가지고 있다
3-1. Django, MySQL client 설치
앞에 만들어준 가상환경을 활성화시킨 후 설치해 주면 됩니다
프로젝트에서 MySQL을 사용할 예정이므로 Django와 MySQL 클라이언트를 함께 설치해줍니다
맥에는 python2가 기본으로 설치되어 있기 때문에 구분을 위해 pip install 대신 python3용 pip3 install 명령어를 사용하겠습니다
(venv) $ pip3 install django mysqlclient
3-2. 에러 해결
※ 설치 중 에러 발생

☞ pkg-config가 없어서 mysqlclient가 제대로 설치되지 않는 문제가 생겼습니다
해결 방법 → mac OS에 pkg-config를 설치해 주자!
① 실행되어 있는 가상환경 비활성화
(venv) $ deactivate
② Homebrew 설치(있다면 ③ 바로 진행)
Homebrew : mac OS에서 패키지를 설치할 때 필요한 툴

▷ 설치 명령어
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치 명령어를 입력하면 맥 노트북 비밀번호 입력하는 칸이 나옵니다
비밀번호 입력하고 엔터 누르면 설치가 진행됩니다
▷ 설치 및 Homebrew 여부 확인

brew --version
③ pkg-config를 시스템에 설치

▷ 설치 명령어
brew install pkg-config
▷ 설치 확인

pkg-config --version
④ *MySQL 환경변수 설정*
MySQL 개발 라이브러리를 찾을 수 있도록 환경변수를 설정해 준다
새로운 터미널을 열어도 환경변수를 적용하기 위해 ~ / .zshrc (또는 ~ / . bash_profile)을 추가해 준다
각각 한 줄씩 실행한다!
▷ 명령어
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
echo 'export MYSQLCLIENT_CFLAGS="-I/usr/local/opt/mysql-client/include"' >> ~/.zshrc
echo 'export MYSQLCLIENT_LDFLAGS="-L/usr/local/opt/mysql-client/lib"' >> ~/.zshrc
▷ 설정 적용(마지막 한 번만 실행)
source ~/.zshrc

▷ 환경변수 확인 명령어
echo $PATH
echo $MYSQLCLIENT_CFLAGS
echo $MYSQLCLIENT_LDFLAGS
▷ 환경변수 설정이 적용됐는지 확인
which mysql
터미널 결과

▷ 환경 변수는 적용이 된 것을 확인할 수 있으나 which mysql 결과가 나오지 않는다
→ MySQL이 해당 경로에 없거나, 설치가 되지 않았다
→ 설치가 안됬을 리는 없으니 MySQL이 어디에 설치되어 있는지 확인해 보자
ls /usr/local/opt/mysql-client/bin
실행

이 방법이 보기 불편하다면 방법 2로 확인해 본다
/usr/local/mysql/bin/mysql --version
실행했을 때 MySQL 버전이 출력되면, mysql이 /usr/local/mysql/bin에 설치되어 있다는 뜻으로 볼 수 있다

▷ 해결방법 : ~/ .zshrc에 MySQL이 있는 경로를 추가해 준다
echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/usr/local/mysql/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/usr/local/mysql/include"' >> ~/.zshrc
설정 적용
source ~/.zshrc
설정 적용 확인하기
which mysql
실행 화면

mysql --version도 실행해 봤다
▷ 처음에 적용되지 않은 원인 :
처음에 세 번 실행한 환경변수는 Homebrew로 설치한 mysql을 위한 명령어이다
나는 공식 홈페이지에서 설치했기 때문에 제대로 적용이 되지 않았던 것!!!
그래서 다시 MySQL 서버의 실행파일이 들어있는 /usr/local/mysql/bin 경로를 PATH에 추가해 주었더니 해결된 것이다!
(공식 홈페이지에서 MySQL을 설치하면 실행파일인 mysql, mysqld, mysqladmin 등이 /usr/local/mysql/bin에 저장된다)
⑤ mysql_config의 경로 확인 후 수정
mysqlclient는 MySQL 설치 경로에 있는 mysql_config라는 스크립트를 사용해 MySQL의 경로를 찾는다
which mysql_config 명령어로 경로를 확인 → 경로를 pkg-config와 연결해줘야 한다
which mysql_config

지금 내가 확인한 것처럼 mysql_config가 /usr/local/mysql/bin/mysql_config에 있다면
그 경로를 PKG_CONFIG_PATH에 추가해 준다
▷ 추가 환경변수 설정
echo 'export PKG_CONFIG_PATH="/usr/local/mysql/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.zshrc
▷ 저장 확인
source ~/.zshrc
실행 화면

⑥ 지금까지 정리한 환경변수 확인 및 수정
혹시나 실수해서 수정이 필요한 경우/지금까지 환경변수를 맞게 입력했는지 헷갈릴 때 파일을 열어 확인해 볼 수 있다
nano ~/.zshrc

수정해 줄 라인이 있으면 수정한 후
Ctrl+X를 누르고 Y 입력해 저장
Enter를 눌러 빠져나오면 된다
수정한 후에는 다시 반영해줘야 하므로 터미널에 해당 명령어 실행한다
source ~/.zshrc
⑦ 변수명으로 확인해 보는 방법
echo $PATH
echo $CPPFLAGS
echo $LDFLAGS
echo $PKG_CONFIG_PATH

⑧ 특정 환경변수 인식이 안된다 (PKG_CONFIG_PATH) ~ 해당 안 되는 분은 럭키... 넘어가셔요
다 완료되었다고 생각하고 다시 설치를 했는데도 오류가 났다
터미널을 새로 켜서 테스트해 보니 저장해 준 PKG_CONFIG_PATH가 인식이 안되고 있었다
▷ 확인 사항 :

→ .zshrc가 제대로 작동하는지 확인하기 위해 아래 명령어를 입력한다
source ~/.zshrc
echo $PKG_CONFIG_PATH
이렇게 했을 때 저장해 둔 변수 값이 나오는지 확인해 보니(사진에서 왼쪽) 잘. 나. 온. 다!
터미널을 오픈하고 불러오지 않고 변수 값을 찾아보면 결과가 나오지 않는다(사진에서 오른쪽)
설정은 맞지만 터미널이 .zshrc가 자동으로 로드하지 않는 문제라고 한다
▷ 해결 방법 1 :

.zprofile 에 .zshrc를 자동으로 로드하도록 설정해 준다
echo 'source ~/.zshrc' >> ~/.zprofile
source ~/.zprofile
터미널 종료 후 다시 값이 정상적으로 나오는지 확인해 본다
echo $PKG_CONFIG_PATH
여전히 값이 빈칸으로 나온다 휴
그러면 두 번째 방법을 진행해 본다
▷ 해결 방법 2 :
로그인 쉘이 제대로 설정되지 않을 가능성을 확인해 본다
먼저 현재 사용 중인 쉘을 확인해본다
echo $SHELL
나온 결과
/bin/bash
bash 쉘을 사용 중이라서 .zshrc가 로드되지 않을 수 있으니, 기본 쉘을 zsh로 변경해 준다
chsh -s /bin/zsh
터미널 종료 후 변경된 쉘 확인
echo $SHELL
/bin/zsh
변수 값이 제대로 나오는지 확인해 본다
echo $PKG_CONFIG_PATH

이제 mysqlclient 설치를 다시 진행해 보자
3-3. mysqlclient 설치
① 이동
cd python3/django_project
② 가상환경 다시 활성화
django_project $ source venv/bin/activate

③ mysqlclient 다시 설치하기
(venv) $ pip3 install --no-cache-dir mysqlclient

3-4. Django 설치도 다시!

Django 설치 명령어
pip install django

설치 확인
django-admin --version
다음 포스팅에서는 실제 프로젝트에 MySQL 연결하는 방법을 진행해 보겠습니다