가상환경 제대로 알고 사용하기

가상환경이란?

파이썬에서는 하나의 라이브러리는 하나의 버전 밖에 설치하지 못합니다. 동시에 여러 프로젝트를 개발할 경우, 서로 다른 버전의 라이브러리를 사용해야할 때가 있는 데요. 이때 각 프로젝트를 사용할 때마다 그 프로젝트에서 사용하는 라이브러리를 재설치해야하는 번거로움이 있습니다.

그래서 가상환경을 사용합니다. 가상환경은 라이브러리를 격리해서 설치할 수 있는 디렉토리를 뜻합니다.

프로젝트마다 라이브러리를 설치하는 디렉토리를 구별해서 사용하면, 서로 다른 버전의 라이브러리도 여럿 설치할 수 있게 됩니다. 물론 한 가상환경 내에서는 하나의 버전만 설치할 수 있습니다.

venv

파이썬3 기본에서 제공해주는 가상환경 모듈입니다. 파이썬2에서는 기본제공 가상환경 모듈이 없어서 써드파티 virtualenv 라이브러리를 사용했었습니다.

아래 명령으로 가상환경을 생성합니다. 즉 라이브러리를 격리해서 설치하는 디렉토리를 생성한 것입니다.

# 지정 경로에 가상환경을 생성합니다.
$ python -m venv 가상환경을_생성할_경로

가상환경은 프로젝트마다 하나씩 생성하시기를 권장드립니다. 각 프로젝트에서 사용하는 라이브러리가 비슷하더라도 개발하다보면 라이브러리 버전이 달라집니다. 프로젝트 생성 단계에서부터 가상환경을 달리 생성하여 관리하시면 라이브러리 관리가 편해집니다. 요즘 디스크 용량이 많이 커졌기 때문에 디스크 용량이 부족해지는 경우는 드뭅니다. 디스크 용량을 희생하고 마음의 평화를 얻으세요. 😉

가상환경은 대개 프로젝트 루트 경로에서 venv 혹은 .venv 이름으로 생성합니다.

# 프로젝트 루트로 먼저 이동하신 후에, 현재 디렉토리 .venv 디렉토리에 가상환경을 생성합니다.
$ python -m venv .venv

주의

git commit 전에 반드시 .gitignore 파일에 가상환경 디렉토리 패턴을 추가해주세요. 많은 초심자 분들이 가상환경 디렉토리를 커밋하는 실수를 하는데, 이런 실수를 미연에 방지하기 위함입니다.

.venv
venv

생성된 가상환경은 반드시 활성화(activate) 단계를 거쳐야 사용할 수 있습니다. 윈도우와 맥/리눅스는 생성되는 가상환경 파일도 다르고, 사용하는 쉘이 달라서 활성화 명령이 다릅니다.

# 윈도우 명령프롬프트/파워쉘 공통 ($ 부분은 명령이 아닙니다.)
$ .venv\Scripts\activate

# 맥/리눅스 쉘 공통
$ source .venv/bin/activate

가상환경를 활성화하신 후에, 반드시 현재 python 명령이 가상환경 내의 python 명령을 가리키는 지 확인해주세요. 만약 python 경로가 가상환경 경로를 가리키지 않는다면, python 명령 혹은 pip 명령이 가상환경 내 라이브러리를 사용하지 않습니다.

# 윈도우 명령 프롬프트
$ where python
C:\work\project\.venv\Scripts\python.exe

# 윈도우 파워쉘
$ Get-Command python | Select-Object -ExpandProperty Source
C:\work\project\.venv\Scripts\python.exe

# 맥/리눅스
$ which python
/Users/username/work/project/.venv/bin/python

가상환경이 활성화되셨다면, 이제 python, python -m pip 명령은 해당 가상환경에 라이브러리를 설치하고, 그 가상환경의 라이브러리를 활용하게 됩니다.

가상환경 사용이 끝나셨다면 deactivate 명령을 통해 가상환경을 비활성화. 즉 가상환경을 빠져나오실 수 있습니다.

VSCode와 PyCharm에서는 각 프로젝트마다 사용하는 가상환경을 지정하는 기능이 있습니다. 이를 지정하시면 터미널 실행 시에 자동으로 가상환경이 활성화되며, 소스코드 편집기에서도 가상환경 내의 라이브러리를 참조하게 됩니다.

VSCode에서는 Python 확장이 필요합니다.

VSCode에서는 Python 확장을 설치하신 후에, 명령 팔레트에서 Python: Select Interpreter 명령을 통해 현 프로젝트에서 사용할 가상환경 경로를 지정하실 수 있습니다.

uv

uv는 Rust로 개발된 매우 빠른 파이썬 패키지/프로젝트 관리자입니다. pip보다 10~100배 이상 빠르다고 알려져있습니다. 저도 요즘 즐겨 사용하고 있습니다.

uv 명령은 다양한 기능들이 있지만, 그 중 venv 관련된 명령만 살펴보겠습니다.

먼저 전역으로 uv를 설치합니다.

python -m pip install --upgrade uv

프로젝트 루트 경로로 이동한 후에, uv venv 명령을 통해 가상환경을 생성합니다. 디폴트로 .venv 디렉토리에 가상환경이 생성됩니다. .gitignore 파일에 .venv 패턴도 꼭 추가해주시구요.

uv venv

따로 가상환경을 활성화할 필요없이 uv pip 명령으로 가상환경에 패키지를 설치하고, uv run 명령으로 가상환경을 사용하여 파이썬 파일을 실행할 수 있습니다.

uv pip install 패키지명
uv pip install -r requirements.txt

uv run python 실행할_파일명.py

가상환경 활성화가 필요하시다면, .venv 경로를 참조해서 아래와 같이 활성화하실 수도 있습니다.

# 윈도우
.venv\Scripts\activate

# 맥/리눅스
source .venv/bin/activate

conda environment

Anaconda Python에서는 conda 명령을 통해 가상환경을 생성하실 수 있습니다. 이를 Conda Environment라고 부릅니다. 파이썬 가상환경은 라이브러리만 격리해서 설치할 수 있는 디렉토리를 생성하는 것이었다면, Conda Environment는 이에 더해 사용할 파이썬 버전까지 격리해서 생성할 수 있습니다.

파이썬 3.8 버전의 Anaconda Python을 설치했었더라도, 아래 명령으로 파이썬 3.13 버전의 Conda Environment를 생성할 수 있습니다. Anaconda Python을 사용하신다면 절대 여러 버전의 파이썬을 설치하실 필요가 전혀 없습니다.

conda create -n 가상환경_이름 python=3.13

python -m venv 명령은 원하는 경로에 가상환경을 생성하기 때문에 해당 디렉토리로 이동해야만 가상환경을 활성화할 수 있습니다. 그에 반면 conda create -n 명령은 Anaconda Python의 특정 디렉토리에 모여 생성되기 때문에, 어느 경로에서든 아래 conda activate 가상환경_이름 명령으로 활성화할 수 있습니다.

conda activate 가상환경_이름

# Conda Environment 빠져나오기
conda deactivate