Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL][240808] pip install -r requirements.txt 의 정체 본문

WHAT I LEARN/TIL

[TIL][240808] pip install -r requirements.txt 의 정체

노네임드개발자 2024. 8. 8. 20:42
어떤 문제가 있었나?

예전 웹개발 종합반을 수강하고 있을 당시, 팀 프로젝트로 플라스크를 이용한 간단한 웹페이지를 개발했다. 하지만 가상환경과 의존성 관리에 대해 제대로 이해하지 못한 상태였고, git pull 할 때마다 프로젝트 환경에서 설치해야 하는 라이브러리들이 제대로 설치되지 않아 오류가 발생했다.


무엇을 시도했나?

이 문제를 해결하기 위해 팀원들에게 도움을 요청했더니, 한 팀원이 아래의 명령어를 추천해주셨다.

pip install -r requirements.txt

 

이 명령어를 사용하면 프로젝트에 필요한 모든 라이브러리를 자동으로 설치할 수 있다고 설명해 줬다. 당시 나는 이 명령어의 의미를 깊이 있게 이해하지 못했지만, 문제를 해결하기 위해 그대로 따라 했다.

당시 무지성으로 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/알고리즘 패시브를 유지할 수 있는 타임라인을 만들어봐야겠다.