Programming/Git

requirements.txt 패키지 종속성 관리

J, J 2019. 11. 29. 15:39

intro

현재 장고 프로젝트를 진행중입니다.

둘이서 git 을 통해서 협업을 하고 있으며 각자 venv를 사용해 가상환경에서 작업을 하고 있습니다.

한 가지 문제에 봉착했는데 각자 작업을 하다보니 install 해오는 패키지가 달라

merge를 할 때마다 문제가 생겼습니다.

패키지 종속성 관리

git 을 통해 협업을 하게 되면 다음과 같은 문제에 봉착하게 됩니다.

파일들은 버젼관리가 잘되더라도, install 한 패키지는 내 환경에만 남아있기 때문이죠.

이럴 경우에는 내 환경에 어떤 패키지들을 사용하고 있나 함께 넘겨주도록 합니다.

현재 환경에서 설치한 패키지를 알려주는 명령어는 다음과 같습니다.

pip freeze

그 결과 설치되어있는 패키지들을 확인할 수 있습니다.

certifi==2018.11.29
chardet==3.0.4
defusedxml==0.5.0 
Django==2.1.7 
django-allauth==0.39.1 
django-appconf==1.0.3 
django-imagekit==4.0.2 
idna==2.8 
oauthlib==3.0.1 
pilkit==2.0 
Pillow==5.4.1 
python3-openid==3.1.0 
pytz==2018.9 
requests==2.21.0 
requests-oauthlib==1.2.0 
six==1.12.0 
urllib3==1.24.1

이제 이를 파일에 담아주어 같이 버젼관리를 해줌으로서 협업자에게 전달하게 됩니다.

이를 파일에 담아주기 위해서는

pip freeze > requirements.txt

다음이 같이 패키지의 내용들을 requirements.txt 에 담아줄 수 있습니다.

그 후 함께 버젼관리를 해주면 협업자도 내가 무슨 패키지를 사용하였는지 확인이 가능합니다.

그렇다면 패키지를 하나씩 확인하면서 설치를 해야할까요?

다행히도 이를 한 번에 install 할 수 있습니다.

pip install -r requirements.txt

현재 없는 패키지만 빠르게 설치할 수 있습니다.