맥북에서 파이썬 개발환경 세팅하기
March 15, 2020
맥북에서 VS Code로 파이썬 개발을 하던 중 패키지와 버전들이 섞이기 시작하면서 멘붕이 왔다. sudo pip install 명령어를 이용해 실수로 설치한 패키지가 의존성 패키지까지 함께 설치가 됐는데, 막상 삭제를 하려고 하니 의존성 패키지는 함께 삭제가 되질 않았다.. 그래서 포맷을 하기로 마음을 먹었다.
이 글에서는 파이썬 패키지의 버전관리를 위한 파이썬의 가상환경 설정이 주를 이루고 있지만, 제가 맥북을 포맷하고 설정을 한 순서대로 모든 과정을 설명 드리겠습니다.
1. 맥북 포맷
맥북을 포맷 하는 방법은 시작시에 리커버리모드로 진입 해서 재설치 하는 방법이 있지만, 왠지 모를 깔끔함을 위해서 USB를 이용하여 OS를 재설치하는 방법을 택했습니다.
리커버리모드를 이용하여 OS 재설치
USB를 이용하여 OS 재설치
MacOS Catalina(10.15.2)를 설치 하였는데, 이전 버전과 가장 다른점은 터미널의 기본 쉘이 bash에서 zsh로 변경 되었다는 점입니다. 기본적인 파이썬과 zsh의 버전은 다음과 같습니다.
zsh 5.7.1
python 2.7.16
python 3.7.3
zsh과 python의 버전. (oh my zsh 설치전)
2. Command Line Tools 설치
맥에서 Command Line Tools for Xcode를 설치하면, 개발에 필요한 툴들이 설치가 된다고 합니다. 정확하게 어떤 툴 들이 설치가 되는지는 잘 모르겠지만, gcc, make, git 등의 명령어를 사용 할 수 있다고 합니다. 저는 git을 사용하기 위해서 Command Line Tools를 설치 하였고, 다음과 같은 명령어를 사용하였습니다.
xcode-select --install
3. VS Code 설치
개발 경혐이 길지는 않지만, 여러 코드 에디터를 전전하다가 정착한 VS Code 입니다. 혹시 어떤 코드 에디터를 써야할지 고민중이시라면, VS Code를 한 번 써 보시는 것을 추천 드립니다. 개인적으로는 Visual Studio를 오랫동안 개발 해 온 MS에서 만든 에디터라는 점 하나만으로도 써 볼만한 가치가 있다고 생각합니다.
VS Code를 설치 후에 무엇보다 추천드리는 설정은 shell 에서 쓸 수 있는 code 명령어를 설치 하는 것입니다. Code 명령어를 설치하면, 터미널에서 현재폴더 전체를 VS Code로 실행하는 것이 명령어 하나로 가능 해 집니다.
맥 터미널에서 code 명령어 사용하기
1. VS Code를 실행한다.
2. F1을 눌러서 명령어 팔레트를 띄운다.
3. shell command를 입력 한 뒤에, Install 'code' command in PATH를 선택하여 실행한다.
# 현재 폴더를 VS Code로 실행
code .
4. 파이썬을 가상환경으로 사용하기
이번 포맷의 주범은 마구잡이로 설치된 파이썬 패키지였습니다. 이런 문제를 해결하기 위해, 파이썬 패키지를 프로젝트별로 관리하는 방법이 가상환경입니다. 파이썬을 가상환경에서 사용하면, 패키지를 원하는 프로젝트 폴더 안에 설치 할 수 있어서, 다른 프로젝트의 패키지와 충돌이 생길 가능성을 없애줍니다.
추가적으로, 다른 사람과 프로젝트를 공유하거나 다른 컴퓨터에서 작업을 할 때, 해당 프로젝트를 위해서 필요한 패키지만을 설치 할 수 있어서 좋습니다.
가상환경의 설치 방법은 크게 두가지가 있습니다.
1. 파이썬에 내장 모듈인 venv를 이용한다.
2. virtualenv 패키지를 이용한다.
저는 두 번째 방법을 선호하는데, 이유는 다음과 같습니다. virtualenv를 사용하면, python 버전을 선택 할 수 있고, 기본적으로 설치되는 pip, setuptools, wheel의 버전을 최신 버전으로 설치 할 수 있습니다.
저는 다양한 python 버전을 사용하지는 않지만, python 내장 모듈인 venv를 사용 할 때, pip list를 실행 할 때마다 뜨는 업데이트 경고문구가 눈에 거슬려서 virtualenv를 선택했습니다.
위: 파이썬 내장 모듈 venv, 아래: virtualenv (oh my zsh 설치 후)
virtualenv를 사용하는 과정은 다음과 같습니다.
# 1. virtualenv를 root 디렉토리에 설치
sudo pip3 install -U virtualenv
# 2. 패키지가 저장될 폴더 생성
# ex) 현재 폴더안에 venv 폴더를 생성
virtualenv venv
# 3. 가상환경 실행 (activate)
source ./venv/bin/activate
# 또는
. ./venv/bin/activate
위와 같이 가상환경을 실행 (activate) 하면 쉘 제일앞에 (venv)
라는 접두어가 붙어서 현재 어떤 가상환경에서 파이썬을 실행중인지 알 수 있습니다. venv 라는 폴더명을 프로젝트명으로 만들면 현재 실행중인 가상환경이 어떤 프로젝트용인지 더욱 쉽게 알 수 있을 것 같습니다.
가상환경에서 작업을 한 뒤에 현재 작업중인 패키지 목록과 버전을 저장하고 불러오는 것은 다음과 같이 할 수 있습니다.
# 패키지 목록과 버전 텍스트로 저장하기
pip freeze > requirements.txt
# 텍스트 파일에 있는 패키지를 설치하기
pip install -r requirements.txt
자, 이제 마음껏 파이썬 패키지를 설치하시고, 혹시 패키지 설치가 잘못 되었을때는, 가상환경을 설정한 폴더 (ex. venv)를 삭제 해 주시고 처음부터 다시 가상환경을 설정 한 뒤에 패키지를 설치하시면 됩니다.
개인적으로 노트북 root에 설치된 파이썬 패키지는 virtualenv 하나로 유지하면서 사용하고 있습니다. sudo pip install을 잘못 사용했다가 포맷까지 하게 되었으니까요…
5. 노드 설치하기
Node.js는 가끔 사용하지만 필수적이라서 설치를 해주었습니다. Node.js 역시 프로젝트별로 버전 관리를 해야 할 수도 있기때문에 버전 관리 프로그램을 이용해서 설치 해 주었습니다. Node.js의 버전 관리 프로그램인 nvm은 다음의 주소에서 설치 할 수 있으며, 간략한 설치 방법도 함께 올려드립니다.
nvm github
# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# Node.js LTS 버전 설치
nvm install --lts
6. 원활한 AWS 이용을 위한 Credential 설정
AWS 서비스를 사용하려면 인증키가 반드시 필요합니다. 인증키를 환경변수에 등록 해 두시면, 인증의 귀찮음에서 벗어나서 원활하게 AWS 서비스를 사용 하실 수 있습니다. 개인적으로는 보안이 조금 걱정되긴 하지만, 노트북 관리를 잘 하시거나, 분실시에는 인증키를 제거하시면 될 것 같습니다.
AWS 인증키 환경변수로 등록하기
~/.zshrc 파일이나 ~/.bashrc 파일에 아래와 같이 환경변수 설정을 넣어 두시면 됩니다.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2
7. Oh My Zsh 설치하기
Oh My Zsh은 zsh에 테마를 입혀주는 프레임워크입니다. 없어도 되지만 적절한 테마는 생산성을 높여주므로 시도 해 보는 것이 좋다고 생각합니다. 개인적으로는 쉘에서 테마를 사용하지 않다가 카탈리나에서 기본쉘이 zsh로 바뀐 기념으로 한 번 설치 해 보았습니다. 설치만으로도 기본 테마가 적용이되는데 기본 테마가 마음에 들어서 계속 사용하고 있습니다.
oh my zsh github
# oh my zsh 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
마지막으로
이 글이 저처럼 버전 관리에 힘들었던 분들에게 도움이 되면 좋겠습니다.
긴 글 끝까지 읽어주셔서 감사드립니다.