Python/Python 개발환경

requirements.txt 사용방법

webnautes 2024. 5. 16. 20:31
반응형

requirements.txt을 사용하는 방법을 다룹니다. 보통 특정 파이썬 프로젝트를 위한 패키지들을  requirements.txt에 저장하기 위해 사용합니다.

 

pip를 사용하여 설치했던 패키지들을  requirements.txt 파일에 저장했다가 새로운 개발환경에서 똑같은 패키지들을 한번에 설치할 수 있습니다.




2024. 2. 24  최초작성

2024. 5. 5  빠져있던 requirements.txt 생성하는 부분 추가 





Miniconda/Anaconda를 사용하면 진행하는 Python 프로젝트 별로 패키지를 별도로 관리할 수 있어 좋습니다.  Miniconda를 처음 사용할땐 왜 사용하는지 이해할 수 없었지만 익숙해지고 나니 프로젝트별로 패키지를 따로 관리하는게 더 편합니다. 여러가지 이유가 있지만 그중 하나는 여러 개의 프로젝트의 패키지를 하나에 설치하다보면 버전 충돌이 나서 문제가 되는 경우가 있더군요. 두 개의 파이썬 패키지가 요구하는 또다른 패키지의 버전이 차이가 나는 경우가 생기기 때문입니다. 



본 포스트는 다음 포스트대로 설치환경이 구성된 이후라 가정하고 설명하지만 필요한 부분만 취하여 requirements.txt를 사용하여 패키지를 관리해도 됩니다. 

 

Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)

https://webnautes.tistory.com/1842 

 

Apple Silicon Macbook에 Miniforge 설치하여 Visual Studio Code와 연동하기

https://webnautes.tistory.com/2101 



진행을 윈도우에서 하고 있지만 동일하게 맥이나 리눅스에서도 사용가능합니다.



opencv 패키지를 설치하여 사용할 opencv 이름의 가상환경을 생성합니다. 파이썬 버전은 3.12를 사용합니다.

 

(base) C:\Users\webnautes>conda create -n opencv python=3.12




opencv 가상환경을 활성화하면 프롬프트 앞에 (opencv)가 붙습니다.

 

(base) C:\Users\webnautes>conda activate opencv
(opencv) C:\Users\webnautes>




opencv 패키지를 설치합니다.

 

(opencv) C:\Users\webnautes>pip install opencv-python




설치된 패키지 목록을 확인합니다.

 

(opencv) C:\Users\webnautes>pip list
Package       Version
------------- --------
numpy         1.26.4
opencv-python 4.9.0.80
pip           23.3.1
setuptools    68.2.2
wheel         0.43.0




이제 새로운 파이썬 가상 환경을 생성하여 opencv 가상환경과 동일하게 opencv 패키지가 설치된 상태로 만들어 보겠습니다.




우선 설치된 패키지 목록을  requirements.txt 파일에 저장합니다. 

 

pip list --format=freeze > requirements.txt 




다음처럼 하라는 글도 보이는데 간혹 패키지 버전이 다음처럼 보이는 문제가 발생합니다.

 

pip freeze > requirements.txt



Brotli @ file:///croot/brotli-split_1714483155106/work

certifi @ file:///croot/certifi_1707229174982/work/certifi

charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work

contourpy==1.2.1

cycler==0.12.1

Cython==3.0.10

filelock @ file:///croot/filelock_1700591183607/work

fonttools==4.51.0

future==1.0.0

gmpy2 @ file:///work/ci_py311/gmpy2_1676839849213/work

idna @ file:///croot/idna_1714398848350/work

iso8601==2.1.0

Jinja2 @ file:///croot/jinja2_1706733616596/work

kiwisolver==1.4.5

lapx==0.5.8

MarkupSafe @ file:///croot/markupsafe_1704205993651/work

matplotlib==3.8.4

mpmath @ file:///croot/mpmath_1690848262763/work

networkx @ file:///croot/networkx_1690561992265/work

numpy==1.22.2

opencv-python==4.9.0.80

packaging==24.0

pillow @ file:///croot/pillow_1714398848491/work

pyparsing==3.1.2

pyserial==3.5

PySocks @ file:///work/ci_py311/pysocks_1676822712504/work

python-dateutil==2.9.0.post0

PyYAML @ file:///croot/pyyaml_1698096049011/work

requests @ file:///croot/requests_1707355572290/work

scipy==1.13.0

six==1.16.0

sympy @ file:///croot/sympy_1701397643339/work

triton==2.3.0

typing_extensions @ file:///croot/typing_extensions_1705599297034/work

urllib3 @ file:///croot/urllib3_1707770551213/work




이제 requirements.txt 파일의 내용을 확인해봅니다. 패키지 이름과 버전이 적혀 있습니다. 그사이에 ==의 의미는 똑같은 버전의 패키지를 설치해야 한다는 의미입니다. 리눅스에선 cat requirements.txt 명령을 사용하세요.

 

(opencv) C:\Users\webnautes>type requirements.txt
numpy==1.26.4
opencv-python==4.9.0.80
pip==23.3.1
setuptools==68.2.2
wheel==0.43.0




이제 새로운 파이썬 가상환경을 생성하고 활성화합니다. 파이썬 3.9를 사용하는 test 이름의 파이썬 가상환경입니다. 

 

(opencv) C:\Users\webnautes>conda create -n test python=3.9



test 파이썬 가상환경을 활성화합니다. 여전히 같은 경로인 것을 알 수 있습니다. 파이썬 가상환경을 바꾼다고해서 현재 경로가 바뀌는것은 아니고 사용가능한 파이썬 버전이나 패키지만 바뀌는 것입니다. 

 

(opencv) C:\Users\webnautes>conda activate test

(test) C:\Users\webnautes>




다음 명령을 사용하여 requirements.txt를 현재 파이썬 가상환경에 반영합니다. 패키지 설치가 진행됩니다.

 

(test) C:\Users\webnautes>pip install -r requirements.txt




설치된 패키지와 버전을 확인해보면 requirements.txt 파일과 동일합니다. 만약 파이썬 가상환경에 다른 패키지들이 설치되어 있었다면 그 패키지들은 유지되고 추가로 requirements.txt 파일에 있는 패키지가 설치됩니다. 만약 동일한 패키지가 이미 설치되어 있다면 requirements.txt 파일에 있는 버전으로 패키지가 변경됩니다. 

 

(test) C:\Users\webnautes>pip list
Package       Version
------------- --------
numpy         1.26.4
opencv-python 4.9.0.80
pip           23.3.1
setuptools    68.2.2
wheel         0.41.2





참고

https://itholic.github.io/python-requirements/ 








반응형