본문 바로가기
Programming, Language, Framework/Python3

Python Virtual Environment (venv) - ubuntu 22.04 소개 및 사용 방법

by 주한_Joe 2023. 2. 20.

들어가며

공부를 더 열심히 해서 이것보다 더 어렵고 복잡하고 멋져 보이는 것들을 하고 싶은 마음은 가득하지만, 아직은 무엇을 해볼까에 대한 생각을 많이 하고 있는 관계로 간단한 것 부터 시작해보려고 합니다. 기본부터 착실히 하다보면 더욱 더 멋있는 걸 할 수 있지 않을까요?ㅎㅎㅎ

 

물론 쉽고 간단하기 때문에 venv에 관해서 포스트를 남기려는 것은 아니고 개인적으로 처음에 python을 공부하기 시작하고, 과제 및 간단한 프로그램들을 만들어 볼 때 venv의 사용법에 대해서 크고 작은 어려움을 겪었습니다. 그렇기에, 저 말고도 코딩을 새로 공부하는 분들이 충분히 헷갈릴만한 부분일거라 생각하여 venv 소개 및 사용법에 대한 포스트를 남기기로 결정했습니다.

 

venv란 무엇인가

그래서 이 venv란 무엇인가... virtual environment를 만드는 python module입니다. venv는 python 3.3 버전 이상에서만 사용할 수 있고, 3.2 이하의 python을 사용하시는 분들은 virtual env를 사용하셔야 됩니다.

 

virtual environment란 특정 버전의 파이썬과 다른 library와 package를 포함한 독립적인 디렉토리를 말합니다. 그래서 venv를 activate 시킨 directory, python project에서 설치한 module 들과 library들은 그 virtual enviornment 밖의 환경에는 아무런 영향이 없고, 바깥에 무슨 module이나 library가 깔려 있던, virtual environment 안에서 개발하고 있는 project에는 영향을 미치지 못합니다. 지금까지 python을 main language로 사용해오면서 각각의 project들이 다른 버전의 module을 이용하는 것을 많이 보았고, 이러한 이유로 인해서 다른 버전의 같은 프로그램이 충돌을 일으켜 아예 개발이 불가능해지거나 일일이 필요한 library들을 관리해줘야하는 경우가 많이 생겼었는데, 이 venv가 간단히 그러한 문제들을 해결해 줄 수 있습니다.

 

그래서 결론적으로는 venv는 가상의 독립된 환경을 제공하여 다른 버전의 python이나 다른 library 들이 이용될 때 서로 충돌이 나지 않도록 방지하는 module이라고 할 수 있습니다. 

 

사용법

우선 메인으로 사용하고 계신 Python의 버전을 확인합니다.

python3 --version

Python version check

제가 사용하는 python의 버전은 3.10.6 이라고 확인 할 수 있습니다. 위에서 언급했다 싶이 python 버전이 3.2 이하 일 시에는 venv를 사용할 수 없습니다.

 

python 버전이 확인 되었으면 venv 모듈을 설치해줘야 합니다.

sudo apt-get install python3-venv

이 커맨드를 통해 venv 모듈을 설치할 수 있습니다.

 

설치가 완료되면, 원하는 이름으로 virtual environment를 생성할 수 있습니다. 

python3 -m venv {사용하고자 하는 가상환경 이름}

virtual environment를 생성하기 전에, 생성하고 싶은 directory로 이동 후에 위의 커맨드를 사용하여 virtual environment를 만들어 줍니다. 생성 이후에는 

source /{생성한 이름}/bin/activate

커맨드를 통하여 virtual environment를 실행시킵니다. 이를 실행 시킨 이후에는 pip3 를 이용하여 필요한 module과 library들을 설치해주시면 생성한 virtual environment 내부에서만 사용가능하게 module과 library들을 설치하여 이용할 수 있습니다.

활성화 시킨 virtual environment를 종료하고 싶다면

deactivate

커맨드를 이용하면 간단하게 비활성화 할 수 있습니다.

 

venv를 사용하면 굉장히 편리하게 각각의 프로젝트마다 필요한 package들을 관리할 수 있습니다. venv 사용법에 익숙해져서 좋은 프로젝트 많이 만드시면 좋겠습니다!