Nonamed Develog
[TIL][240808] pip install -r requirements.txt 의 정체 본문
어떤 문제가 있었나?
예전 웹개발 종합반을 수강하고 있을 당시, 팀 프로젝트로 플라스크를 이용한 간단한 웹페이지를 개발했다. 하지만 가상환경과 의존성 관리에 대해 제대로 이해하지 못한 상태였고, git pull 할 때마다 프로젝트 환경에서 설치해야 하는 라이브러리들이 제대로 설치되지 않아 오류가 발생했다.
무엇을 시도했나?
이 문제를 해결하기 위해 팀원들에게 도움을 요청했더니, 한 팀원이 아래의 명령어를 추천해주셨다.
pip install -r requirements.txt
이 명령어를 사용하면 프로젝트에 필요한 모든 라이브러리를 자동으로 설치할 수 있다고 설명해 줬다. 당시 나는 이 명령어의 의미를 깊이 있게 이해하지 못했지만, 문제를 해결하기 위해 그대로 따라 했다.
어떻게 해결됐는가?
"pip install -r requirements.txt" 명령어를 실행한 후 프로젝트에 필요한 모든 라이브러리들이 자동으로 설치되었고, git pull을 할 때 발생했던 오류가 더 이상 나타나지 않았다. 하지만 팀 프로젝트 피드백에서 "이 명령어가 모든 파일을 설치하는 것이 아니며, 나중에 추가로 배우게 될 것"이라는 말이 기억에 떠올랐다. 이해하지 못했던 부분이 계속 의구심으로 남아 있었지만, 문제를 해결하기 위해 깊이 생각할 겨를이 없었다.
그런데 현재 Django를 배우기 전 프레임워크와 개발환경 구성하는 것을 학습하면서 이 의구심이 해소되었다. "pip install -r requirements.txt" 라는 명령어는 'requirements.txt" 파일에 작성된 라이브러리만 설치하는 것이며, 그 외의 파일이나 설정은 포함되지 않는다. 이 명령어는 가상환경 내에서 필요한 패키지들을 설치하는 데 꼭 필요한 도구이며, 프로젝트의 의존성을 관리하는 중요한 방법이라는 것을 이해했다.
새로 알게 된 점은 무엇인가?
가상환경 설치
- 가상환경은 각 프로젝트마다 독립적인 파이썬 환경을 제공하기 때문에 프로젝트 간 충돌 없이 서로 다른 라이브러리 버전을 사용할 수 있다.
- 가상환경을 만들기 위해서는 아래와 같은 명령어를 사용하며, 환경을 활성화한 후 라이브러리 설치와 개발을 진행하게 된다.
python -m venv venv
source venv/Scripts/activate
pip freeze
- 가상환경 내에서 필요한 라이브러리들을 설치한 후 아래와 같은 명령어를 사용하면 현재 가상 환경에 설치된 모든 패키지들의 목록을 requirements.txt 파일에 저장할 수 있다.
pip freeze > requirements.txt
- requirements.txt 파일에는 패키지의 이름과 버전이 포함되어 있어, 다른 개발자가 동일한 환경을 구축할 수 있도록 한다. github에 올릴 때 같이 올려주는 것이 좋다.
pip install -r requirements.txt
- 다른 개발자가 프로젝트를 동일한 환경에서 실행할 수 있도록 아래와 같은 명령어를 사용한다.
pip install -r requirements.txt
- requirements.txt 파일에 작성된 모든 라이브러리들이 가상환경에 자동으로 설치할 수 있다.
- 팀원 간의 환경 차이로 인해 발생할 수 있는 오류를 예방할 수 있다.
무엇을 느꼈고 내일은 무엇을 할까?
오늘 장고 기초 강의를 수강하면서 공부한 가상환경의 의존성은 예전부터 궁금했던 부분을 해소할 수 있는 좋은 기회였다. 내일 장고 기초 강의를 마저 들으면서 장고에 더 빠져볼까 한다. 그리고 CS/SQL/알고리즘 패시브를 유지할 수 있는 타임라인을 만들어봐야겠다.
'WHAT I LEARN > TIL' 카테고리의 다른 글
[TIL][240812] 웹 기본 이해 복습 (0) | 2024.08.12 |
---|---|
[TIL][240809] DTL(Django Template Language) 문법 (0) | 2024.08.09 |
[TIL][240807] Django 주차 대비 Decorators 학습 (0) | 2024.08.07 |
[TIL][240806] 모의 기술 면접 대비 CS 나머지 공부 (0) | 2024.08.06 |
[TIL][240805] 알고리즘 나머지 공부 Circular Queue, deque (0) | 2024.08.05 |