Python으로 프로그램을 작성하다 보면 표준 라이브러리가 아닌 패키지와 모듈을 사용할 수 있습니다. 이러한 패키지는 pip를 통해서 관리할 수 있습니다. 그럼 최신 버전의 python을 설치하고 필요한 python 패키지는 pip로 설치하면 되는데 pyenv와 venv는 왜 필요할까요?
예를 들어 봅시다. 우리는 지금 python 3.5 버전으로 프로그램 A를 개발하고 있습니다. 그리고 딥 러닝 모델 개발을 위해 tensorflow 1.15 버전을 설치하였습니다. 시간이 지나, 또 다른 프로그램 B를 개발하려고 합니다. 그 동안 tensorflow 최신 버전이 업데이트 되어 이번엔 tensorflow 2를 사용하려고 합니다. 최신 버전은 2.5.0 이었습니다. 그리고 python도 최신 버전을 사용하기 위해 python 3.8로 이참에 업데이트를 하고 싶습니다. 정리하면 아래와 같습니다.
프로그램 A의 requirements
- Python 3.5
- Tensorflow 1.15
프로그램 B의 requirements
- Python 3.8
- Tensorflow 2.5.0
이러한 상황에서 우리는 프로그램 A와 B를 둘다 개발하고 유지 보수하고 싶습니다. 먼저 떠오르는 방법은 프로그램 A의 requirements를 수정해서 프로그램 B와 똑같이 맞출 수 있습니다. 더 최신 버전으로 업데이트 하는 거니 하고 나면, 왠지 기분도 더 좋을 것 같습니다. 시스템에 설치된 python 버전을 3.8로 업데이트하고, tensorflow 패키지도 2.5.0으로 업데이트 합니다. 그리고 프로그램 A가 정상적으로 작동할 수 있도록 프로그램을 수정하고 테스트해야 합니다.
Python 3.8과 tensorflow 2.5가 backward compatible하다면 어떤 수정도 없이 프로그램이 정상적으로 동작할 수도 있지만, tensorflow의 경우 major 버전이 변경된 만큼 많은 수정이 필요할 것 같습니다. 그리고 또 다른 패키지를 사용하는 경우는 어떨까요? 프로그램 C도 추가된다면? 항상 모든 프로그램의 실행 환경을 맞추는 것은 현실적으로 힘든 일이 될 것입니다.
또 다른 방법은 pyenv와 venv를 사용하는 방법 입니다. Pyenv는 여러 버전의 python을 설치하고 원하는 python 버전을 선택할 수 있도록 도와줍니다. Venv는 python 가상 환경을 만들어 줍니다. 가상 환경을 생성하면 마치 python을 새로 설치하고 package를 하나도 설치하지 않은 상태를 제공하는 것이라고 생각하시면 됩니다. 여러 프로젝트에서 서로 다른 package를 설치하여 사용해야 할 때 유용합니다.
다음 글에서 pyenv와 venv를 설치해서 사용하는 방법을 살펴 보겠습니다.
2021.05.30 - [실습] - pyenv와 venv로 python 버전과 pip 패키지 관리하기 (2/2)
'실습' 카테고리의 다른 글
Python 스크립트 실행을 위한 Dockerfile 만들기 (0) | 2021.07.10 |
---|---|
비트코인 Blockchain RPCs 사용 (0) | 2021.06.20 |
Tensorflow Serving을 위한 Kubernetes Pod Readiness probe 설정 (0) | 2021.06.14 |
pyenv와 venv로 python 버전과 pip 패키지 관리하기 (2/2) (0) | 2021.05.30 |
비트코인 풀노드 실행하기 (0) | 2021.05.25 |