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)
진행을 윈도우에서 하고 있지만 동일하게 맥이나 리눅스에서도 사용가능합니다.
opencv 패키지를 설치하여 사용할 opencv 이름의 가상환경을 생성합니다. 파이썬 버전은 3.12를 사용합니다.
opencv 가상환경을 활성화하면 프롬프트 앞에 (opencv)가 붙습니다.
opencv 패키지를 설치합니다.
설치된 패키지 목록을 확인합니다.
이제 새로운 파이썬 가상 환경을 생성하여 opencv 가상환경과 동일하게 opencv 패키지가 설치된 상태로 만들어 보겠습니다.
우선 설치된 패키지 목록을 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 명령을 사용하세요.
이제 새로운 파이썬 가상환경을 생성하고 활성화합니다. 파이썬 3.9를 사용하는 test 이름의 파이썬 가상환경입니다.
test 파이썬 가상환경을 활성화합니다. 여전히 같은 경로인 것을 알 수 있습니다. 파이썬 가상환경을 바꾼다고해서 현재 경로가 바뀌는것은 아니고 사용가능한 파이썬 버전이나 패키지만 바뀌는 것입니다.
다음 명령을 사용하여 requirements.txt를 현재 파이썬 가상환경에 반영합니다. 패키지 설치가 진행됩니다.
설치된 패키지와 버전을 확인해보면 requirements.txt 파일과 동일합니다. 만약 파이썬 가상환경에 다른 패키지들이 설치되어 있었다면 그 패키지들은 유지되고 추가로 requirements.txt 파일에 있는 패키지가 설치됩니다. 만약 동일한 패키지가 이미 설치되어 있다면 requirements.txt 파일에 있는 버전으로 패키지가 변경됩니다.
참고
Member discussion