[파이썬] 가상환경, 왜 꼭 써야 할까?
by rowing0328※ 이 글은 이노그리드 교육 과정의 일부로, 저만의 관점과 해석을 더해 작성되었습니다.
Intro
파이썬을 공부하다 보면 꼭 듣게 되는 단어가 바로 '가상환경(Virtual Environment)'이다.
처음에는 그냥 pip install로 필요한 라이브러리만 깔면 될 것 같지만,
실제로 프로젝트가 늘어나고 남이 만든 코드를 실행해야 할 때
가상 환경이 왜 필요한지 몸소 깨닫게 된다.
이번 포스트에서는 가상환경이 도대체 왜 필요한지, 어떻게 만들고,
어떻게 써야 하는지 처음 접하는 분도 이해할 수 있도록 예시와 함께 쉽게 정리해 보겠다.

왜 가상환경이 필요한가
예를 들어보자.
내가 웹 크롤러를 하나 만들고 있다. 이 프로젝트에서는 requests 2.30 버전을 쓴다.
그런데 회사에서 시킨 또 다른 프로젝트는 requests 2.27 버전을 필요로 한다.
게다가 이쪽은 flask도 필요하고, 저쪽은 django도 써야 한다.
만약 컴퓨터에 requests, flask, django 등
모든 라이브러리를 한꺼번에 깔아 놓는다면 무슨 일이 벌어질까?
한 프로젝트에 맞춰 라이브러리를 업그레이드했더니,
다른 프로젝트가 갑자기 오류를 뿜는다!
파이썬의 라이브러리들은 서로 의존성도 다르고,
버전이 바뀌면 함수나 동작 방식도 달라지는 경우가 많다.
즉, 내 컴퓨터에 깔린 파이썬 '공용 공간'(전역 환경)에
여러 프로젝트의 라이브러리가 뒤섞이면
언제 터질지 모르는 시한폭탄이 되어버린다.
가상환경이란
바로 이 문제를 해결해 주는 것이 가상환경이다.
한마디로 '내 프로젝트 전용 미니 파이썬 세상'을 만들어주는 도구다.
각 프로젝트마다 가상환경을 따로 만들면,
프로젝트 1에서는 requests 2.27,
프로젝트 2에서는 requests 2.30 등
서로 충돌 없이 원하는 버전으로 마음껏 쓸 수 있다.
가상 환경은 파이썬, pip, 라이브러리들이 모두 독립적으로 관리된다.
내 컴퓨터 전체 파이썬과는 완전히 분리된다.
마치, '공용 부엌'이 아닌 '내 방 안 작은 싱크대'
같다고 생각하면 쉽다.
실제로 써보기 - 가상환경 실습
1. 가상환경 만들기
파이썬 표준 라이브러리만 써도 가상환경을 만들 수 있다.
(다른 도구로는 conda도 유명하지만, 이번 글에서는 가장 기본인 venv로 진행한다.)
[ 예제 코드 ]
# 1. 원하는 폴더로 이동
cd my_project_folder
# 2. 가상환경 생성 (여기서는 venv라는 이름 사용)
python -m venv venv
- my_project_folder 폴더 안에 venv라는 폴더가 새로 생긴다.
- 이 안에 파이썬, pip, 라이브러리 등등 내 프로젝트만의 독립 공간이 만들어진다.
2. 가상환경 활성화
가상환경을 '입장'한다고 생각하면 된다.
[ Windows ]
venv\Scripts\activate
[ Mac/Linux ]
venv\Scripts\activate
→ 터미널 앞에 (venv)가 붙으면 가상환경에 들어온 것!
3. 가상환경에서 라이브러리 설치
이제 이 안에서 pip install로 필요한 것만 설치하면
내 컴퓨터 전체에 영향을 주지 않는다.
[ 예제 코드 ]
pip install requests==2.27
- 이제 이 가상환경 안에서만 requests 2.27 버전이 깔린다.
- 나중에 다른 프로젝트는 전혀 영향을 받지 않는다.
4. 가상환경 나가기
일을 다 봤으면 밖으로 나온다.
[ 예제 코드 ]
deactivate
- 이제 평소 내 컴퓨터 파이썬 환경으로 돌아온다.
가상환경이 주는 유연함 - 프로젝트가 꼬이지 않는 비결
프로젝트마다 각자 가상환경을 만들어주면
서로의 라이브러리 충돌 때문에 고생할 일이 거의 없다.
남이 만든 프로젝트를 다운로드하여서 실행할 때도
README에 적힌 대로 가상환경을 만들고,
pip install -r requirements.txt만 해주면
내 환경이 엉키지 않는다.
특히 회사나 팀 프로젝트를 하다 보면
모두가 같은 환경에서 작업해야 할 때가 많은데,
이때도 가상환경이 큰 역할을 한다.
일상 속의 비유 - 내 방, 네 방
가상환경을 처음 배울 때는 다소 낯설 수 있지만,
사실 생각해 보면
"내 방, 네 방 따로 있는 셈"이라 생각하면 쉽다.
공용 거실에서 친구랑 각자 짐을 꺼내 쓰다 보면
물건이 섞이기 쉽고,
서로 취향도 달라 불편하다.
하지만 각자 자기 방에서
필요한 것만 꺼내놓고,
나만의 방식으로 방을 꾸미면
더 편하고, 서로 피해도 주지 않는다.
가상환경도 똑같다.
마무리 - 앞으로의 프로젝트에 날개를 달다
파이썬을 제대로 쓰려면
가상환경은 선택이 아니라 필수다.
한 번만 연습해 보면,
왜 다들 가상환경을 외치는지
금방 이해가 갈 것이다.
앞으로 내 프로젝트마다
'나만의 방'을 마련해 주듯
가상환경을 만들어주는 습관을 들이면
내 파이썬 실력도 한 단계 업그레이드될 것이다.
참고 자료:
A Complete Guide to Python Virtual Environments
A Complete Guide to Python Virtual Environments (2022) – Dataquest
As you get started in Python, you may be wondering: What are Python virtual environments? Why should I use them? How do I use them? With examples, this tutorial answers these questions and more!
www.dataquest.io
블로그의 정보
코드의 여백
rowing0328