컴퓨터/Python

Python (15) - 파이썬 가상환경을 만들자 (venv)

달서비 2023. 4. 15. 14:12

한 프로그래밍 언어로 여러 가지 작업을 하다 보면 패키지의 충돌 등 다양한 문제가 생길 수 있습니다. 특히 파이썬 같은 경우에는 A라는 프로젝트를 돌리기에 패키지가 많은 오류를 일으킵니다. 이런 방법을 해결하기 위한 한 가지의 수단으로 가상환경을 이용해보도록 하겠습니다. 

 

가상환경이 필요한 이유

파이썬 로고 및 텍스트

 

 

위에서 말한 것과 같이 여러 가지 작업을 하다 보면 패키지의 충돌이 일어날 수 있습니다. 프로젝트마다 필요한 라이브러리나 패키지의 버전이 다르기 때문에 해당 사건이 일어날 수 있습니다. 이것을 의존성 분리라고 합니다. 가상환경을 통하여 의존성 충돌을 피하고, 각 프로젝트를 독립적으로 관리할 수 있습니다. 이를 통하여 효율적으로 프로젝트를 관리할 수 있으며 이는 프로그램 제작 후 배포 시에 용이합니다.

 

글로벌 환경 (좌), 가상환경 (우)

위의 두 사진을 비교하면 한 번에 알 수 있습니다. 왼쪽 사진 같은 경우에는 하나의 파이썬 설치 폴더를 가지고 작업하는 사진이며 각각 프로젝트 A, B를 운영하고 있습니다. 오른쪽 사진은 가상환경으로 분리하여 프로젝트 A, B를 운영하고 있습니다. A 프로젝트 같은 경우에는 1.0 버전의 패키지를 사용하며, B 프로젝트 같은 경우는 2.0이라는 버전을 사용합니다. B 프로젝트 환경에 맞춰 프로그램이 돌아가기 때문에 A 프로젝트에는 호환성 충돌의 문제가 발생할 수 있습니다. 특히 파이썬 환경에서 가상환경을 설치하는 경우 다른 버전의 파이썬을 사용할 수 있기 때문에 프로젝트 내에 더욱더 좋은 호환성을 만들 수 있습니다. 

 

venv를 사용해보자

파이썬에 가상환경을 사용할 수 있는 내장 모듈 중에서 venv가 있습니다.

윈도우 환경에서 가상환경을 구축하겠습니다.

 

활성화 과정

우선 CMD에 아래의 커맨드를 치면 가상환경을 생성하고 활성화할 수 있습니다.

python -m venv myenv
myenv\Scripts\activate.bat

우선 첫 번째 줄은 'myenv'이라는 이름의 가상환경을 설치합니다. 가상환경이 설치되면 밑의 명령을 통하여 가상환경을 활성화할 수 있습니다.

 

비활성화 과정

비활성화도 마찬가지로 CMD에 아래의 deactivate라는 커맨드를 치면 가상환경을 비활성화할 수 있습니다.

deactivate

 

패키지 목록 관리하기

마지막으로 가상환경을 잘 사용하기 위해 패키지 목록을 관리하는 방법입니다. 파이썬에 pip를 이용하여 설치할 때 

'requirements.txt' 파일로 패키지 목록을 관리할 수 있습니다.

pip freeze > requirements.txt
pip install -r requirements.txt
pip uninstall -r requirements.txt

먼저 가장 위의 커맨드는 각 패키지의 목록과 버전을 requirements.txt 파일에 저장합니다. 해당 커맨드를 통하여 패키지와 버전관리를 할 수 있습니다. 두 번째와 세 번째 커맨드는 저장된 파일을 이용하여 설치 혹은 삭제하는 명령입니다. 이를 통해 효율적인 패키지 관리를 할 수 있습니다.