완벽 정리 가이드
요즘 파이썬 공부나 프로젝트를 하다 보면 “가상환경(virtual environment)”이라는 말을 정말 자주 듣게 됩니다. 저도 처음에는 “왜 굳이 가상환경을 써야 하지? 그냥 파이썬 설치해서 쓰면 되지 않나?” 싶었는데, 막상 프로젝트를 몇 개 해보다 보니 그 중요성을 확실히 느꼈습니다.
이번 글에서는 가상환경이 왜 필요한지, 어떻게 만드는지, 그리고 실제 사용 팁까지 차근차근 정리해보겠습니다.
1. 왜 파이썬 가상환경이 필요한가?
파이썬은 패키지를 아주 쉽게 설치할 수 있어서 개발이 편하지만, 반대로 프로젝트마다 다른 버전의 패키지가 필요할 때 충돌이 생기기 쉽습니다.
예를 들어, A 프로젝트에서는 Django 3.x 버전을 쓰고, B 프로젝트에서는 Django 5.x를 써야 한다고 해봅시다. 전역(global) 환경에 한 버전만 설치되어 있으면 둘 중 하나가 오류가 나죠.
이럴 때 가상환경은 프로젝트별로 완전히 독립된 패키지 공간을 만들어줍니다. 그래서 어떤 프로젝트를 실행하든 서로 간섭이 없습니다.
요약하자면:
- 각 프로젝트마다 독립된 패키지 버전 관리 가능
- 시스템 파이썬 환경을 보호
- 배포나 협업 시 환경 충돌 방지
2. 가상환경 만드는 방법
파이썬 3.3 이상 버전에서는 기본적으로 venv 모듈이 포함되어 있습니다. 별도 설치 없이 바로 사용할 수 있습니다.
(1) 가상환경 생성
터미널(명령 프롬프트)에서:
python -m venv myenv
myenv는 가상환경 폴더 이름입니다. 이름은 자유롭게 정할 수 있습니다.- 이 명령을 실행하면 현재 디렉터리 안에
myenv/폴더가 생기고, 그 안에 파이썬 실행 파일과 전용 패키지 디렉터리가 만들어집니다.
(2) 가상환경 활성화
운영체제에 따라 명령이 다릅니다.
Windows:
myenv\Scripts\activate
macOS / Linux:
source myenv/bin/activate
활성화되면 터미널에 (myenv) 같은 표시가 앞에 붙습니다. 이제부터 설치하는 모든 패키지는 전역이 아닌 이 환경 안에 설치됩니다.
(3) 가상환경 비활성화
작업이 끝나면 간단히 다음 명령으로 종료할 수 있습니다:
deactivate
3. 패키지 설치 및 관리
가상환경이 활성화된 상태에서 패키지를 설치할 때는 평소대로 pip을 쓰면 됩니다.
pip install requests
현재 환경에 설치된 패키지를 확인하려면:
pip list
현재 환경을 저장해두고 싶다면:
pip freeze > requirements.txt
이렇게 저장된 requirements.txt 파일은 다음 사람이나 서버에서 이렇게 다시 설치할 수 있습니다:
pip install -r requirements.txt
4. 자주 하는 실수와 팁
- 가상환경을 활성화하지 않은 상태에서 패키지를 설치하면 전역 파이썬에 설치됩니다. 꼭
(env)표시를 확인하세요. - 프로젝트 루트 폴더에
.gitignore파일로myenv/폴더를 제외해두세요. (보통 깃에 올릴 필요 없습니다.) - VSCode 같은 IDE를 쓸 때는 가상환경을 만든 뒤, 인터프리터를 해당 환경으로 설정하세요. (명령어:
Ctrl + Shift + P→ “Python: Select Interpreter”)
5. 정리
가상환경은 처음에는 조금 번거롭게 느껴질 수 있지만, 프로젝트를 여러 개 다루는 순간 필수가 됩니다. 오히려 한 번 익숙해지면 코드 재현성, 협업, 배포가 훨씬 편해져요.
✅ 핵심 요약
python -m venv myenv: 가상환경 생성source myenv/bin/activate: 활성화 (Windows는myenv\\Scripts\\activate)deactivate: 비활성화pip freeze > requirements.txt: 패키지 버전 저장
(참고로, macOS에서는 Python 3의 기본 설치가
/usr/bin/python3에 있고, Homebrew 버전은/opt/homebrew/bin/python3에 있으니 헷갈릴 때는which python으로 경로를 꼭 확인하세요.)
'IT&DEV - IT & 개발' 카테고리의 다른 글
| InfluxDB 란? 주요특징 및 설치방법 : 시계열 데이터베이스의 강자 (0) | 2025.10.10 |
|---|---|
| SSH를 통해 파일을 전송하는 방법(FTP 안될때) (0) | 2023.05.29 |
| Git과 SVN 비교: 장단점 살펴보기 (0) | 2023.05.26 |
| Docker환경에 Ubuntu 환경구성의 장점 (0) | 2023.05.03 |
| [OMV6]Potainer를 활용한 NextCloud설치 (0) | 2023.05.03 |
댓글