
virtualenv를 활용한 파이썬 가상 환경 구축
파이썬 개발 시 여러 프로젝트를 진행하다 보면 각기 다른 라이브러리 버전이 필요해 충돌이 발생하는 경우가 있습니다. 이러한 문제를 해결하기 위해 가상 환경을 사용합니다. 가상 환경은 프로젝트별로 독립된 파이썬 실행 환경을 만들어 의존성 충돌을 방지하고 깔끔한 개발 환경을 유지하도록 돕는 도구입니다. 그중 하나인 virtualenv는 다양한 파이썬 버전에서 유연하게 사용할 수 있는 강력한 도구입니다.
1. virtualenv 설치하기
virtualenv는 파이썬 패키지 관리자인 pip을 통해 간단하게 설치할 수 있습니다.
pip install virtualenv
파이썬 3 환경에서는 pip3, 파이썬 2 환경에서는 pip2를 사용할 수도 있습니다.
pip3 install virtualenv
2. 가상 환경 생성하기
설치가 완료되면, 이제 가상 환경을 만들 차례입니다. 일반적으로 프로젝트 폴더 내에 가상 환경 폴더를 생성하는 것이 관리하기에 편리합니다.
먼저, 프로젝트 폴더를 만들고 해당 폴더로 이동합니다.
mkdir my_new_project
cd my_new_project
이후 virtualenv
명령어를 실행하여 가상 환경을 생성합니다. 관습적으로 가상 환경 폴더는 venv
나 env
로 이름을 지정합니다.
virtualenv venv
이 명령어는 my_new_project
폴더 안에 venv
라는 새 디렉토리를 만듭니다. 이 폴더는 프로젝트 전용 파이썬 인터프리터, pip 실행 파일, 그리고 필요한 기타 파일들을 포함하게 됩니다.
만약 특정 파이썬 버전으로 환경을 구성하고 싶다면 -p
옵션을 활용합니다.
virtualenv -p /usr/bin/python3.8 venv # Python 3.8 버전으로 생성
virtualenv -p /usr/bin/python2.7 venv # Python 2.7 버전으로 생성
3. 가상 환경 활성화하기
가상 환경을 사용하려면 반드시 활성화 과정을 거쳐야 합니다. 활성화 시 쉘의 경로(PATH
)가 변경되어 가상 환경에 속한 파이썬 인터프리터와 라이브러리를 사용하게 됩니다.
운영체제별 활성화 명령어는 다음과 같습니다.
Linux/macOS:
source venv/bin/activate
Windows (명령 프롬프트):
venv\Scripts\activate.bat
Windows (PowerShell):
venv\Scripts\Activate.ps1
가상 환경이 정상적으로 활성화되면, 터미널 프롬프트 앞에 가상 환경 이름(예: (venv)
)이 표시되어 현재 활성화 상태임을 알려줍니다.
(venv) user@host:~/my_new_project$
4. 가상 환경 내에서 패키지 설치하기
가상 환경이 활성화된 상태에서 pip
을 이용해 패키지를 설치하면, 해당 패키지는 시스템 전역이 아닌 현재 활성화된 가상 환경에만 설치됩니다.
예를 들어, requests
라이브러리를 설치해 보겠습니다.
(venv) pip install requests
이 패키지는 my_new_project/venv/lib/pythonX.Y/site-packages
(Linux/macOS) 또는 my_new_project\venv\Lib\site-packages
(Windows) 경로에 저장됩니다.
현재 환경에 설치된 패키지 목록을 확인하려면 pip freeze
명령어를 사용합니다.
(venv) pip freeze
이 명령어의 출력 결과를 requirements.txt
파일로 저장하면 프로젝트의 의존성 목록을 쉽게 관리하고 공유할 수 있습니다.
(venv) pip freeze > requirements.txt
나중에 다른 환경에서 이 프로젝트를 구성할 때, 이 requirements.txt
파일을 사용해 한 번에 필요한 모든 패키지를 설치할 수 있습니다.
(venv) pip install -r requirements.txt
5. 가상 환경 비활성화 및 삭제
가상 환경에서의 작업이 끝나면 deactivate
명령어로 시스템 전역 환경으로 돌아갈 수 있습니다.
deactivate
만약 더 이상 가상 환경이 필요하지 않다면, 해당 가상 환경 폴더를 삭제하기만 하면 됩니다.
Linux/macOS:
rm -rf venv
Windows (명령 프롬프트):
rd /s /q venv
6. virtualenv 사용의 장점
- 의존성 격리: 각 프로젝트가 독립적인 환경을 가지므로 패키지 버전 충돌을 근본적으로 방지합니다. 예를 들어, 한 프로젝트에서 Django 2.2를 사용하고, 다른 프로젝트에서 Django 3.0을 사용할 수 있습니다.
- 환경 관리 용이: 불필요한 패키지가 시스템 전역에 설치되는 것을 막고, 프로젝트에 필요한 최소한의 라이브러리만 관리할 수 있어 환경을 깔끔하게 유지합니다.
- 쉬운 공유:
requirements.txt
파일을 통해 프로젝트의 의존성을 명확히 기록하고, 다른 개발자나 배포 환경에서 동일한 개발 환경을 손쉽게 구축할 수 있도록 돕습니다.
7. Python 3.3+ 내장 모듈 venv
와의 차이점
파이썬 3.3 이상 버전에는 venv
라는 가상 환경 모듈이 표준 라이브러리에 내장되어 있습니다. virtualenv
와 유사한 기능을 제공하며 사용법도 비슷합니다.
venv
사용법:
python3 -m venv venv_name
활성화 방법은 virtualenv
와 동일합니다.
주요 차이점은 다음과 같습니다.
- 설치 유무:
venv
는 파이썬 3.3 이상에 기본 포함되어 있어 별도 설치가 필요 없습니다. 반면,virtualenv
는pip
을 통해 설치해야 합니다. - 호환성:
virtualenv
는 파이썬 2와 3 모두에서 작동하며, 구형 파이썬 버전에서도 사용 가능합니다.venv
는 파이썬 3.3 이상에서만 작동합니다. - 기능:
virtualenv
가venv
보다 약간 더 많은 기능과 유연성을 제공하지만, 대부분의 기본적인 가상 환경 관리에는venv
로도 충분합니다.
어떤 도구를 선택할지는 사용하려는 파이썬 버전과 프로젝트 요구사항에 따라 결정하면 됩니다. 파이썬 3.3 이상을 사용한다면 venv
가 더 간편할 수 있습니다.