파이썬 - 의존성 라이브러리 추출하기/설치하기 (pip 사용)

파이썬 라이브러리 추출하기/ 설치하기

파이썬 코드에 선언된 import 문이 있다 하더라도, 해당 라이브러리들이 자동으로 설치되지는 않는다.

즉, 로컬 개발환경에서는 개발하면서 이것저것 설치를 했다하더라도, 실행되는 환경에서 이 라이브러리는 명시적으로 설치해 주지 않으면 정상적으로 실행되지 않는다는 것을 뜻한다.

내가 어떤 패키지들을 사용했는지 어떻게 확인할 수 있을까?

또, 확보한 패키지 목록을 바탕으로 어떻게 쉽게 런타임 환경에 패키지 의존성을 주입할 수 있을까?

 


 

설치된 패키지 목록 확인하기

pip 명령어를 활용하여 현재 환경에 이미 설치된 패키지 목록을 쉽게 추출할 수 있다.

$ pip freeze

aiohttp==3.7.4.post0
async-timeout==3.0.1
attrs==21.2.0
beautifulsoup4==4.10.0
bs4==0.0.1
cassandra-driver==3.24.0
certifi==2021.10.8
chardet==4.0.0
charset-normalizer==2.0.9
click==7.1.2
discord==1.7.3
discord.py==1.7.3
geomet==0.2.1.post1
idna==3.3
jsonpickle==2.0.0
multidict==5.2.0
powernad==0.8.0
requests==2.26.0
six==1.15.0
soupsieve==2.3.1
typing_extensions==4.0.0
urllib3==1.26.7
yarl==1.7.2

커맨드 창에서 pip freeze 명령을 실행하면, 본인의 환경에 설치된 패키지 목록과 그 버전을 출력해 준다. (사람마다 다름)

이 목록을 쉽게 재사용하기 위해, 파일로 저장하자.

$ pip freeze > requirements.txt

즉, 위와 같이 출력된 패키지 정보를 requirements.txt로 저장한다.

 

패키지 설치하기

앞서 확보한 requirements.txt 파일을 사용하여, 패키지를 설치하려면 다음의 명령어를 실행한다.

$ pip install -r requirements.txt

 

반응형

 

테스트 결과

아래와 같이 pyenv로 새로운 virtual env를 하나 만든다.

$ pyenv virtualenv 3.8.5 venv-3.8.5

새로운 virtual env로 변경하고, 패키지 의존성 리스트를 확인한다.

$ pyenv local venv-3.8.5
$ pip freeze
(출력되는 내용 없음)

이 상태에서, 앞서 생성해 놓은 rquirements.txt를 사용하여, 의존성 패키지를 설치해 본다.

$ pip install -r requirements.txt

(설치 메시지 출력)

패키지들 설치가 완료되면, 정상적으로 설치 완료되었는지 확인 명령어로 다시 확인해 본다.

$ pip freeze

aiohttp==3.7.4.post0
async-timeout==3.0.1
attrs==21.2.0
beautifulsoup4==4.10.0
bs4==0.0.1
cassandra-driver==3.24.0
certifi==2021.10.8
chardet==4.0.0
charset-normalizer==2.0.9
click==7.1.2
discord==1.7.3
discord.py==1.7.3
geomet==0.2.1.post1
idna==3.3
jsonpickle==2.0.0
multidict==5.2.0
powernad==0.8.0
requests==2.26.0
six==1.15.0
soupsieve==2.3.1
typing-extensions==4.0.0
urllib3==1.26.7
yarl==1.7.2

requirements.txt에 입력되어 있던 라이브러리들이 정상적으로 설치된 것을 확인할 수 있다.

 

더 보기

 

파이참(PyCharm)에서 pip 업데이트가 안될 때?

PyCharm에서 pip 업데이트 오류가 발생한다면? PyCharm에서 특정 패키지를 설치하려고 할 때, 설치가 정상적으로 되지 않는다면 pip 자체가 우선적으로 업데이트 되어야 한다. 그런데, pip 업데이트부

luran.me

 

댓글

Designed by JB FACTORY