Python venv - virtual environment 구성하기

Jaesang Yoo·2022년 1월 12일
0

Why venv?

Python Application 개발 시 Standard Library가 아닌 Package와 Module을 사용하여 개발할 경우가 많습니다. 특정 버그가 수정된 버전이 필요하거나, 다른 버전의 Library Interface를 사용하여 프로그램을 개발 할 경우가 있습니다.

즉, 특정 버전의 파이썬 설치만으로 프로그램의 요구 사항을 충족시키는 것이 불가능 할 수도 있다는 뜻입니다. 프로그램_A는 1.0 Version의 Module이 필요하지만, 프로그램_B는 2.0 Version의 Module이 필요할 때, Version 1.0이나 2.0만 설치되면 하나의 프로그램은 실행할 수 없게 됩니다.

이러한 문제의 해결하기 위하여 Virtual Environment를 구성합니다.

  • 가상 환경 적용으로 특정 버전의 파이썬과 개발하려는 프로그램에 적용되는 패키지로 독립된 파이썬 환경 구성 가능
  • 의존성과 버전문제 차이로 인한 어플리케이션간 충돌 문제 해결

앞의 예시에서, 프로그램A는 Version 1.0의 파이썬과 관련 라이브러리가 적용된 가상 환경으로 구성하고, 프로그램B는 Version 2.0의 파이썬과 관련 라이브러리가 적용된 가상환경으로 구성할 수 있습니다. 프로그램B에서 라이브러리를 업그레이드 하거나 추가 설치되어도 프로그램A에 영향을 끼치지 않습니다.

가상환경 구성

virtualenv나 venv 모듈을 이용하여 가상환경을 생성합니다.

  • virtualenv : 별도로 설치 필요
  • venv : python 3.4 버전부터 기본적으로 내장됨

가상환경을 만드는데 3.5버전부터는 venv를 권장합니다.

1. venv 옵션 확인

₩> python -m venv –help

-m : python에 -m 옵션을 지정해서 pip를 실행할 수도 있습니다. -m 옵션은 모듈을 실행하는 옵션이며 pip도 모듈입니다.

2. 가상환경 생성

₩> py -3.8 -m venv program_a_venv

-3.8 : python 버전 선택 시(python 3.8 version)
program_a_venv : 가상환경 구성할 폴더명

명령을 실행하면 program_a_venv 폴더가 생성되고, Python 바이너리/바이너리의 복사/심볼릭 링크를 포함 하는 하위 디렉토리를 생성합니다.

3. 가상환경 활성화

₩> venv\Scripts\activate

실행 시 아래와 같이 커맨드 앞에 (program_a_venv)가 붙음

(program_a_venv)₩>

4. pip 모듈 설치(test)

(program_a_venv)₩> pip install numpy==1.21.4

5. 비활성화

(program_a_venv)₩> deactivate

실행 시 아래와 같이 복귀

₩>

가상환경 구성 테스트

처음 예시로 들었던 내용과 같은 형태의 가상환경을 구성합니다.

  • Program A
    • python version : 3.8
    • numpy version : 1.21.4
    • venv 폴더명 : program_a_venv
  • Program B
    • python version : 3.9
    • numpy version : 1.22.0
    • venv 폴더명 : program_b_venv

결과

  • Program A
  • Program B

각각 프로그램 환경에 대하여 python version, pip list로 버전을 확인해 보았습니다.

Reference

profile
dev with data

0개의 댓글