Virtual Environment는 격리된 Python 환경을 만드는 것이다.
격리된 Python 환경을 사용함으로써 종속성을 관리하고 각 환경마다 충돌을 피하는 데 도움이 된다.
가상 환경의 또다른 장점은 다른 컴퓨터에서 동일한 환경을 재현하는 데 유리한 것이다.
여러 개발자가 동일한 프로젝트를 운영하는 팀 내에서 가상 환경을 통해 동일한 환경 내에서 작업하는 것이다.
일관성을 보장하고 환경 차이로 인하 오류 발생 가능성을 줄일 수 있게 된다.
Python 3.3 버전 부터 내장된 venv를 통해서도 가상 환경을 세팅할 수 있다. venv는 별도로 다운로드 할 필요가 없다.
virtualenv는 python2 버전부터 사용되던 타사 라이브러리로 venv보다 확장성과 속도 측면에서 더 우수하다고 한다.
virtualenvwrapper는 virtualenv의 확장 버전이다. 가상 환경 생성, 삭제, 기타 개발 워크 플로우를 관리하는 래퍼가 포함되어 있어 종속성 충돌 없이 여러 프로젝트를 쉽게 작업할 수 있는 도움을 준다.
virtualenvwrapper docs에서 알려주는 특징은 아래와 같다.
1. 모든 가상 환경을 한 곳에서 관리할 수 있다.
2. 가상 환경 관리(생성, 삭제, 복사) 기능을 제공합니다.
3. 하나의 명령어로 환경 전환이 가능합니다.
4. 가상 환경을 인수로 사용하는 명령어를 제공합니다.
python -m pip install virtualenv 명령어로 virtualenv 설치
pip(3) install virtuallenwrapper로 virtualenvwrapper 설치
아래 환경 변수 설정 및 virtualenvwrapper_lazy.sh 스크립트 실행
export WORKON_HOME=~/.virtualenvs
(파이썬 경로)
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.12/bin/python3
(virtualenvwrapper_lazy.sh 스크립트 경로)
source /Library/Frameworks/Python.framework/Versions/3.12/bin/virtualenvwrapper_lazy.sh
✅ 지정하고 싶은 파이썬 경로를 찾기 힘들면 which 명령어를 활용해보자!
which python3
~/.zshrc에 위 명령어를 작성하여 쉘이 실행될 때마다 적용될 수 있게 세팅하기
| 명령어 | 설명 |
|---|---|
workon | 가상환경 목록을 조회합니다. |
mkvirtualenv [env_name] | 가상환경을 생성합니다. |
rmvirtualenv [env_name] | 가상환경을 삭제합니다. |
workon [env_name] | 지정된 가상환경으로 진입합니다. |
setvirtualenvproject | 현재 디렉토리를 프로젝트 디렉토리로 설정하고, 가상환경과 연결합니다. workon으로 가상환경을 활성화하면 자동으로 해당 디렉토리로 이동합니다. |
cdproject | setvirtualenvproject로 설정한 프로젝트 디렉토리로 이동합니다. |
deactivate | 현재 활성화된 가상환경을 비활성화하고 나갑니다. |




📝
가상이 붙어 있으니 막 없는 것에서 가져오는 듯한 느낌이 강하지만 결국
1. 폴더 별로 구분
2. 사용 하고자 하는 경로를 지정
3. 폴더 내에 다운로드 된 라이브러리를 사용
하는 것이다!
python -m pip install Django==${version}django-admin startproject django_setup ..)를 찍어주지 않으면 폴더를 생성하여 기본 Django 서버를 만들어 준다.python manage.py runserver

Django 경로를 찾지 못하는 에러가 등장했다.
파이참 IDE가 참고하는 Python 인터프리터 경로에 Django가 없기 때문이었다.
✅ local에 다운로드 되어 있는 Python 인터프리터에는 가상 환경 세팅을 위한 라이브러리만 다운 받아져 있고 Django 라이브러리를 다운받아져 있지 않기 때문이다!

Django가 다운로드 되어 있는 Ptyhon 인터프리터로 바꿔 주면 해당 에러가 사라진다 :)
-> Djanon가 다운로드 된 가상환경의 경로로 바꾸어 주는 것이다!
