Py) requirements.txt 파일을 활용한 라이브러리 설치

Py) requirements.txt 파일을 활용한 라이브러리 설치

다수의 파이썬 라이브러리 설치를 일괄로 처리할 수 있는 requirements.txt 파일을 사용하는 방법을 알아보자.


개요

파이썬으로 분석 또는 개발을 위해서 환경 구축을 하려고 하다 보면 라이브러리 설치가 몇 개에서 수십개 이상이 필요할 때가 있다. 이럴 때 일일이 기존 환경의 라이브러리명과 각 라이브러리의 버전을 확인하고, pip install 를 사용하여 라이브러리를 설치하는 것은 매우 번거로운 일이다. 이런 경우 requirements.txt 파일을 사용하면 한 번에 여러 라이브러리를 설치할 수 있다.

requirements.txt 파일 작성

requirements.txt 파일은 꼭 해당 파일명일 필요가 없지만 일반적으로 해당 파일명을 사용한다. requirements.txt 파일은 다음과 같이 생성할 수 있다.

1
2
3
import subprocess

subprocess.run("pip freeze > requirements.txt", shell = True)

상기 코드를 실행하면 현재 작업폴더에 requirements.txt 파일이 생성된다. 해당 파일을 열어보면 현재 환경에 설치된 라이브러리 목록과 버전이 기록되어 있다. 이 파일을 이용하여 다른 환경에 동일한 라이브러리를 설치할 수 있다.
※ 작업폴더의 이해와 확인은 Py) 기초 - 경로 게시글 참고

참고로 상기 코드와 유사한 코드로 다음과 같은 코드도 사용할 수 있다.

1
2
3
4
import subprocess

with open("requirements.txt", "w") as f:
subprocess.run(["pip", "freeze"], stdout = f)

혹시나 2개 이상의 주피터 커널을 사용하면서 현재 사용하는 커널이 메인 커널이 아닌 다른 커널이라면 다음의 코드를 사용할 수 있다.

1
2
3
4
5
import sys
import subprocess

subprocess.run([sys.executable, "-m", "pip", "freeze"],
stdout = open("requirements_sub.txt", "w"))

requirements.txt 파일 확인

생성한 requirements.txt 파일을 열어보면 다음과 같이 라이브러리 목록과 버전이 기록되어 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
absl-py==2.1.0
annotated-types==0.7.0
anyio==4.4.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
astunparse==1.6.3

...

wsproto==1.2.0
xyzservices==2024.9.0
yfinance==0.2.51
zstandard==0.23.0

그 중에서 직접 파일을 내려받아 로컬 파일을 기준으로 설치하거나 특정 깃허브 레포지토리를 기준으로 설치된 라이브러리는 다음과 같이 기록되어 있다.

1
2
pyhwp @ file:///C:/Users/encai/desktop/DSJA_python/90_supports/pyhwp
pykospacing @ git+https://github.com/haven-jeon/PyKoSpacing.git@b32a889cbd10b006d2f4aba118f0cd5b677e2979

requirements.txt 파일을 이용한 라이브러리 설치

주피터 노트북 환경에서 requirements.txt 파일이 작업폴더에 위치해 있는 경우 이용하여 라이브러리를 설치하는 방법은 다음과 같다.

1
!pip install -r requirements.txt

혹시나 제대로 설치가 안된다면 다음과 같이 “–user”를 추가한 코드를 실행하면 된다.

1
!pip install -r requirements.txt --user
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×