ice rabbit programming

[Python] pipenv 사용하기 본문

Development/Python

[Python] pipenv 사용하기

판교토끼 2021. 1. 14. 23:46

virtual env(가상 환경)

python을 좀 다루었다면, env를 많이 이용할 것이다. 해당 프로그램만을 위한 환경을 위해 env를 따로 만들어서 python을 실행하는 것이다. 그렇기 때문에 가상 환경을 켜고 패키지를 설치하면, 같은 디렉토리라도 가상 환경을 껐을 경우 제대로 실행이 되지 않는다.

위 말이 좀 추상적이라고 생각한다면, 서로 요구한 패키지의 버전 등이 다른 프로젝트끼리 충돌이 일어나지 않게 하기 위해 각각의 환경을 구축하는 것이다.
ex) A 프로젝트에서 0.1버전 요구, B 프로젝트에서 0.2버전 요구. 환경이 나누어져있지 않다면 충돌 발생

 

패키지 매니저

node.js를 사용해보았다면 package.json이 친숙할 것이다. npm은 node.js의 패키지를 관리해주는데(yarn도 같은 역할을 한다), package.json에 관리하는 패키지를 기록한다. 이 점은 협업할 때 강점을 드러내는데, packge.json만 공유하면, 받은 사람은 npm install(혹은 yarn add)만 입력하면 기록된 모든 패키지가 설치된다.

python에서는 pip가 패키지를 설치/제거 등 관리하는 역할을 하는데, 안타깝게도 이것을 기록해두는 곳이 따로 없다. 그렇기 때문에 여러 사람이 협업할 때 어떤 패키지를 깔아야할지 공유하기가 쉽지 않았다. 이를 해결하기 위해 requirements.txt를 활용하는 방안이 나왔지만, 이는 수동으로 관리해야 한다는 단점이 있었다.

 

pipenv

위 둘을 합쳐서 개선해보자는 생각에서 탄생한 것이 pipenv이다. 이름에서 알 수 있듯이 python virtual env도 생성해주고, 패키지 매니저의 역할도 한다. 여기서는 Pipfile, Pipfile.lock 파일로 어떤 패키지가 설치되었는지 관리하고 있기 때문에, 좀 더 수월한 협업 개발이 가능하다. 보안, dotenv를 활용한 워크플로우 등 제공하는 기능이 많아 아직까지도 많이 애용되고 있다.

아래와 같이 이용이 가능하다.

 

pip install pipenv
pipenv --python 3.8 # python 3.8버전으로 pipenv 생성
pipenv shell # 만들어진 pipenv 실행, 만들어진 것이 없다면 자동으로 생성 후 실행
pipenv install flask # 패키지 설치
pipenv install black --dev # 개발 환경에서만 사용할 패키지 설치