프로젝트마다 ‘작은 우주’를 만드는 법, Python Venv – 파이썬 가상환경 설정 6편

Python Venv 포스트 이미지

파이썬 가상환경 만들기(python venv create) 관련해서 여기까지(1~5편) 오면서 이상하게 이런 일이 자주 생길 수가 있습니다.

  • 어제까지 잘 되던 코드가 오늘은 안 돼요
  • A 프로젝트에서 설치한 패키지가 B 프로젝트를 망가뜨려요
  • “pip install” 한 번 했는데, 왜 전체가 흔들리죠?

이때 많은 분들이 스스로를 탓해요.
“내가 뭘 잘못했나…?” 하고요.

그런데 솔직히 말하면, 이건 실수라기보다 구조 문제에 가깝습니다.
파이썬을 “전역(글로벌)” 하나로만 쓰면, 서로 다른 프로젝트들이 같은 주방에서 요리하는 상황이 돼요.

  • 한쪽은 “소금”을 1스푼 넣고 싶은데
  • 다른 쪽은 “소금”이 아니라 “설탕”을 넣어야 하고
  • 둘 다 같은 통(같은 site-packages)을 쓰면
  • 결국 한쪽은 망합니다.

가상 환경은 이 문제를 “실력”이 아니라 “구조”로 해결해요.

프로젝트마다 각자 냉장고/주방을 만들어주는 것.
그게 가상 환경입니다. (packaging.python.org)

오늘 목표(핵심 4개)

  1. 파이썬 가상환경 만들기(python venv create)
  2. 활성화/비활성화(python venv activate/deactivate)
  3. requirements.txt로 공유/재현(협업의 핵심)
  4. direnv로 자동 활성화(“들어가면 켜지고, 나오면 꺼지는” 느낌)

1) Python venv vs virtualenv? 뭐를 써야 하죠?

초보자 기준으로는 이렇게 정리하면 편합니다.

  • venv: 파이썬 표준 라이브러리(추가 설치 없이 바로 사용)
  • virtualenv: 더 확장된 기능/유연성(특정 상황에서 유리)

이 시리즈는 사용자 메모에 맞춰 virtualenv 흐름을 메인으로 가되, “기본은 venv도 된다”는 감각을 같이 드릴게요.

2) Mac 편: 파이썬 가상 환경 만들기 실전 루틴

Step 0. 프로젝트 폴더로 이동

pwd
cd ~/projects/my_proj # 폴더 위치와 이름은 본인이 정하기

Step 1. virtualenv 설치(딱 한 번)

python3 -m pip install virtualenv

Step 2. 파이썬 가상환경 만들기(프로젝트 전용 “작은 우주” 생성)

virtualenv 명령어를 이용하여 파이썬 가상환경 폴더(예: data_science_env)를 하나 만듭니다.

virtualenv --python=python3.7 data_science_env

팁:

  • --python-p로 줄일 수 있어요.
  • python3.7 대신 절대 경로를 넣을 수도 있습니다(이미 설치된 인터프리터만 가능).
    이 개념이 바로 “내가 원하는 파이썬 버전을 이 프로젝트에 고정”하는 감각입니다.

Step 3. 가상환경 활성화(python venv activate)

source data_science_env/bin/activate

source 명령어를 이용하여 파이썬 가상환경을 활성화하면 터미널 프롬프트 앞쪽에 (data_science_env) 같은 표시가 붙게 됩니다.
이 표시가 보이면, 지금부터는 “이 프로젝트 전용 냉장고”에서 요리한다고 생각하면 됩니다.

Step 4. 이제부터는 python/pip를 간단히 써도 OK

가상 환경 안에서 작업을 할 때는 보통 python3 대신 蟒蛇, pip3 대신 核心를 사용해도 안전해집니다(가상 환경이 PATH를 앞쪽으로 바꿔주기 때문)

python --version
pip list

Step 5. 패키지 설치 & 버전 고정(예시)

pip install numpy==1.20.1
pip list # 설치된 패키지 리스트 확인

Step 6. 협업의 핵심: requirements.txt 만들기

pip freeze > requirements.txt
cat requirements.txt # 가상환경 내 설치한 패키지 목록 확인

이 파일이 있으면 “내 환경을 그대로 복제”할 수 있어요. 복제하기 위해서는 pip install -r requirements.txt 명령어를 사용하면 됩니다.

Step 7. 파이썬 가상환경 비활성화(python venv deactivate)

deactivate

3) Windows 편: 가상 환경(virtualenv) 실전 루틴

Windows에서는 PowerShell 기준으로 안내할게요. (CMD도 가능하지만 표기가 조금 달라요)

Step 0. 프로젝트 폴더로 이동

cd C:\projects\my_proj

Step 1. virtualenv 설치

py -m pip install virtualenv

Step 2. 파이썬 가상환경 만들기

virtualenv -p python3.8 django_proj_env

python3.8이 인식이 안 되면, 2편에서 했던 것처럼 py -0p/설치 버전 확인 후 맞춰가는 방식이 필요할 수 있어요. (이건 환경마다 달라서 “경로/버전 확인” 습관이 빛납니다.)

Step 3. 파이썬 가상환경 활성화(python venve activate)

PowerShell:

.\django_proj_env\Scripts\Activate.ps1

CMD:

.\django_proj_env\Scripts\activate.bat

Step 4. 패키지 설치/목록

pip install numpy==1.20.1
pip list

Step 5. requirements.txt 만들기

pip freeze > requirements.txt
type requirements.txt

Step 6. 비활성화

deactivate

4) “환경 공유”가 진짜로 동작하는지, 한 번 연습해볼까요?

python venv 환경 공유 이미지

여기부터가 통찰 포인트예요.
가상 환경은 “내 PC에서만 깔끔한 장난감”이 아니라, 다른 PC에서도 똑같이 재현되느냐가 핵심입니다.

시나리오: user2 폴더에서 똑같이 복제하기

  1. 기존 프로젝트에서 requirements.txt 확보
  2. 새 폴더로 이동
  3. 새 가상 환경 만들기
  4. requirements로 한 번에 설치

Mac 예시:

mkdir user2
cd user2
cp ../requirements.txt .
virtualenv -p python3.7 data_science_env
source data_science_env/bin/activate
pip install -r requirements.txt
pip list

Windows 예시(개념 동일):

mkdir user2
cd user2
copy ..\requirements.txt .
virtualenv -p python3.8 django_proj_env
.\django_proj_env\Scripts\Activate.ps1
pip install -r requirements.txt
pip list

이 연습을 한 번 해보면 “아, 내가 만든 환경이 다른 곳에서도 살아나네”라는 감각이 생깁니다.
이 감각이 생기면 협업이 쉬워져요.

5) direnv로 “자동 가상환경” 만들기

여기서 한 단계 더 창의적으로 가볼게요.

가상 환경의 고통 포인트는 의외로 이겁니다.

  • “아 맞다… activate 안 했네?”
  • “왜 import가 안 되지?”
  • 알고 보니 가상 환경 밖에서 실행함…

direnv는 이걸 “습관”이 아니라 “시스템”으로 해결합니다.
특정 폴더에 들어가면 자동으로 환경이 설정되고, 나오면 자동으로 해제됩니다.

핵심 개념

  • 프로젝트 루트에 .envrc를 둔다
  • direnv가 이를 읽고 환경을 적용한다(보안상 “허용” 절차가 있음)

예시 아이디어(개념용):

  • .envrc에 “가상 환경 자동 생성/활성화” 스크립트를 넣어서
  • 누구든 폴더 들어오면 환경이 동일하게 켜지도록

direnv 관련 참고 아이디어로 layout python3 같은 접근도 커뮤니티에서 많이 씁니다.

이 파트는 “필수”가 아니라 “경험이 쌓이면 생산성이 폭발하는 보너스 기술” 정도로만 기억해두면 충분해요.

6) 오늘의 체크리스트

  • 프로젝트 폴더에 가상 환경을 만들었다
  • 활성화/비활성화를 해봤다
  • pip freeze > requirements.txt로 환경 스냅샷을 만들었다 .
  • 새 폴더에서 pip install -r requirements.txt로 복제해봤다.
  • direnv가 “왜 강력한지” 감을 잡았다.

마무리: 파이썬 환경 설정의 진짜 완성은 “충돌을 예방하는 구조”

가상 환경을 쓰기 시작하면, 파이썬은 갑자기 “얌전해”집니다.
사실 파이썬이 바뀐 게 아니라, 내가 프로젝트를 다루는 구조가 바뀐 거예요.

그리고 여기서부터는 개발이 조금 더 창의적으로 변합니다.

  • 프로젝트를 새로 시작할 때 “환경부터 설계”하게 되고
  • 협업할 때 “내 PC에서만 되는 코드”를 줄일 수 있고
  • 배포/서버/노트북 교체에도 흔들리지 않게 됩니다.

이제 여러분도 파이썬 가상환경 마스터가 되신 것을 축하드립니다!

类似文章