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
현재 없는 패키지만 빠르게 설치할 수 있습니다.