Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

파이썬 venv 활성화 방법: 초보자 가이드

Stefania Boiko

Stefania Boiko

Updated on May 2, 2025

Python 개발의 역동적인 세계에서 종속성과 프로젝트 환경을 관리하는 것은 정신 건강과 성공에 매우 중요합니다. 두 가지 다른 프로젝트를 진행한다고 상상해 보세요. 하나는 requests와 같은 인기 라이브러리의 이전 버전이 필요하고, 다른 하나는 최신 기능이 필요합니다. 이 두 가지를 시스템 전체에 설치하면 필연적으로 충돌, 오류 및 좌절을 겪게 됩니다. 이것이 바로 Python 가상 환경이 해결하도록 설계된 문제입니다.

이 튜토리얼은 Python 가상 환경의 기본 사항을 안내하며, 특히 내장된 venv 모듈을 사용한 활성화 과정에 중점을 둡니다. 왜 가상 환경이 필수적인지, 어떻게 생성하는지, 그리고 가장 중요한 것은 다양한 운영 체제와 셸에서 활성화하는 단계별 명령어를 다룰 것입니다.

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하십니까?

개발 팀이 최대 생산성으로 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하십니까?

Apidog는 귀하의 모든 요구 사항을 충족하며 Postman을 훨씬 저렴한 가격으로 대체합니다!
button

가상 환경이란 정확히 무엇인가? (그리고 왜 절대적으로 필요한가)

본질적으로 Python 가상 환경은 특정 Python 설치와 추가 패키지 모음을 포함하는 격리된 디렉터리 트리입니다. Python 프로젝트를 위한 자체 포함된 버블이라고 생각하십시오.

핵심 개념:

  1. 격리: 가상 환경을 생성하고 활성화하면 설치하는 모든 패키지(pip install ...)는 전역 Python 설치가 아닌 해당 환경의 디렉터리 내부에 배치됩니다. 이렇게 하면 종속성 요구 사항이 다른 프로젝트 간의 충돌을 방지할 수 있습니다. 프로젝트 A는 requests==2.20.0을 사용하고 프로젝트 B는 requests==2.31.0을 사용하여 서로 또는 시스템의 기본 Python 설정을 방해하지 않습니다.
  2. 종속성 관리: 가상 환경은 프로젝트 종속성 관리를 명시적이고 재현 가능하게 만듭니다. 환경에 설치된 모든 패키지(및 특정 버전) 목록을 생성할 수 있습니다(일반적으로 pip freeze > requirements.txt 사용). 이 파일은 협업자와 공유하거나 배포 파이프라인에서 사용하여 다른 곳에서 정확히 동일한 환경을 재현하는 데 사용할 수 있습니다(pip install -r requirements.txt).
  3. 버전 제어: venv 자체(일반적으로 생성된 Python 버전을 사용)에서는 덜 일반적이지만, 이 개념을 통해 프로젝트를 생성 시 시스템에서 사용 가능한 특정 Python 인터프리터 버전에 연결할 수 있습니다. 더 고급 도구는 이를 기반으로 더 엄격한 Python 버전 관리를 수행합니다.
  4. 정돈: 전역 Python 설치를 깔끔하게 유지합니다. 필수적이고 전역적으로 필요한 도구(pip 자체, venv, 전역으로 선호하는 린터 또는 포맷터 등)만 기본 site-packages 디렉터리에 상주합니다. 프로젝트별 잡동사니는 프로젝트의 가상 환경 내에 유지됩니다.

해결된 문제:

가상 환경 없이 이 시나리오를 고려해 보세요:

  • ProjectAlpha를 위해 CoolLib v1.0을 설치합니다.
  • 나중에 CoolLib v2.0(v1.0에서 호환되지 않는 변경 사항이 있음)이 필요한 ProjectBeta를 시작합니다.
  • CoolLib을 전역적으로 v2.0으로 업그레이드합니다.
  • 이제 ProjectAlphaCoolLib v1.0을 예상했기 때문에 오류가 발생합니다.

가상 환경 사용:

  • ProjectAlpha를 위해 venv_alpha를 생성합니다. 활성화합니다. CoolLib v1.0을 설치합니다. 비활성화합니다.
  • ProjectBeta를 위해 venv_beta를 생성합니다. 활성화합니다. CoolLib v2.0을 설치합니다. 비활성화합니다.

두 프로젝트 모두 필요한 버전의 CoolLib 자체 격리된 복사본을 사용하여 완벽하게 작동합니다.

venv 소개: Python의 내장 솔루션

Python 3.3부터 venv 모듈은 표준 라이브러리에 포함되어 가벼운 가상 환경을 생성하는 권장 방법이 되었습니다. venv 이전에는 virtualenv 패키지가 가장 많이 사용되는 서드파티 솔루션이었지만(그리고 여전히 일부 추가 기능을 제공합니다), 대부분의 일반적인 사용 사례에서는 venv가 충분하고 바로 사용할 수 있습니다.

단계 1: 가상 환경 생성

환경을 활성화하기 전에 환경을 생성해야 합니다. 이는 원하는 Python 인터프리터와 함께 -m 플래그를 통해 실행되는 venv 모듈을 사용하여 수행됩니다.

터미널 또는 명령 프롬프트를 열고 프로젝트의 루트 디렉터리로 이동한 다음 다음 명령을 실행합니다.

# Linux/macOS용
python3 -m venv <환경_이름>

# Windows용 (종종 'python'으로 작동)
python -m venv <환경_이름>

설명:

  • python3 또는 python: 가상 환경의 기반이 될 Python 인터프리터를 지정합니다. 여러 Python 버전이 설치되어 있는 경우 명시적으로 지정하십시오 (예: python3.11 -m venv ...).
  • -m venv: Python에게 venv 모듈을 스크립트로 실행하도록 지시합니다.
  • <환경_이름>: 가상 환경 파일을 저장할 디렉터리에 대해 선택하는 이름입니다. 일반적인 관례는 다음과 같습니다.
  • venv
  • .venv (선행 점은 종종 *nix 시스템에서 기본적으로 디렉터리를 숨기고 일부 도구에게 메타데이터임을 알립니다. 이는 널리 채택된 표준입니다.)
  • env
  • .env

예시 이름으로 .venv를 사용해 보겠습니다:

# Linux/macOS
python3 -m venv .venv

# Windows
python -m venv .venv

이 명령을 실행하면 프로젝트 폴더에 .venv(또는 선택한 이름)라는 새 디렉터리가 표시됩니다.

가상 환경 디렉터리 내부:

.venv 디렉터리 내부를 살펴보면 다음과 같은 구조를 찾을 수 있습니다(OS에 따라 세부 사항이 약간 다릅니다).

  • bin/ (Linux/macOS) 또는 Scripts/ (Windows): 이 환경에 특정한 Python 실행 파일, 이 환경에 연결된 pip 실행 파일, 그리고 중요한 활성화 스크립트(activate, activate.bat, Activate.ps1 등)가 포함된 중요한 디렉터리입니다.
  • include/: Python 확장 모듈 컴파일을 위한 C 헤더 파일이 포함되어 있습니다(기본 사용에는 덜 관련됨).
  • lib/ (Linux/macOS) 또는 Lib/ (Windows): Python 표준 라이브러리의 복사본 또는 심볼릭 링크와, 이 환경에 설치된 패키지가 상주할 site-packages 하위 디렉터리가 포함되어 있습니다.
  • pyvenv.cfg: 사용된 기본 Python 인터프리터와 같이 환경 생성에 사용된 옵션을 지정하는 구성 파일입니다.

단계 2: 가상 환경 활성화 (주요 이벤트!)

환경을 생성하면 구조가 설정되지만, 환경을 활성화하면 현재 셸 세션이 기본적으로 해당 환경의 Python 인터프리터와 패키지를 사용하도록 수정됩니다. 활성화는 기본적으로 환경의 스크립트 디렉터리(.venv/bin 또는 .venv/Scripts)를 셸의 PATH 환경 변수에 선행 추가합니다.

정확한 활성화 명령어는 사용 중인 운영 체제에 따라 다릅니다.

A. Windows:

명령 프롬프트 (cmd.exe):

  • .venv 폴더가 포함된 프로젝트 디렉터리로 이동합니다.
  • .bat 스크립트를 실행합니다:
.venv\Scripts\activate.bat

PowerShell:

  • 프로젝트 디렉터리로 이동합니다.
  • .ps1 스크립트를 실행합니다:
.venv\Scripts\Activate.ps1
  • 실행 정책에 대한 중요 참고 사항: 기본적으로 PowerShell은 보안상의 이유로 스크립트 실행을 방지할 수 있습니다. "...cannot be loaded because running scripts is disabled on this system"과 같은 오류가 표시되면 현재 세션 또는 사용자에 대해 실행 정책을 변경해야 할 수 있습니다. 일반적인 명령어는 다음과 같습니다(주의해서 사용하고 보안 영향을 이해하십시오).
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

정책을 변경하려면 PowerShell을 관리자 권한으로 실행해야 할 수 있습니다. 실행 정책에 대한 자세한 내용은 PowerShell 문서를 참조하십시오. 정책이 허용하는 경우 .venv\Scripts\Activate.ps1을 직접 실행하는 것만으로도 작동하는 경우가 많습니다.

Git Bash (또는 Windows의 다른 Bash 유사 셸):

  • 프로젝트 디렉터리로 이동합니다.
  • source 명령을 사용합니다(Linux/macOS와 유사):
source .venv/Scripts/activate

(슬래시 사용 및 파일 확장자 없음 주의).

B. macOS / Linux:

Bash 또는 Zsh (일반적인 기본값):

  • 프로젝트 디렉터리로 이동합니다.
  • source 명령을 사용합니다:
source .venv/bin/activate

Fish Shell:

  • 프로젝트 디렉터리로 이동합니다.
  • Fish는 다른 활성화 스크립트를 사용합니다:
source .venv/bin/activate.fish

Csh 또는 Tcsh:

  • 프로젝트 디렉터리로 이동합니다.
  • .csh 스크립트를 사용합니다:
source .venv/bin/activate.csh

활성화되었는지 어떻게 알 수 있나요?

가상 환경이 성공적으로 활성화되었음을 나타내는 가장 즉각적인 신호는 셸 프롬프트의 변경입니다. 환경 이름(예: (.venv))이 일반적으로 프롬프트 줄 시작 부분에 표시됩니다.

# 활성화 전 (예시)
user@hostname:~/my_project$

# 활성화 후 (예시)
(.venv) user@hostname:~/my_project$

이 접두사는 현재 셸 세션이 지정된 가상 환경 내에서 작동하고 있음을 즉시 알려줍니다. 이제 실행하는 모든 python 또는 pip 명령은 .venv 내부의 실행 파일과 패키지를 사용합니다.

이를 확인할 수 있습니다:

# 사용 중인 Python 실행 파일 확인
which python  # Linux/macOS
where python # Windows (cmd/powershell)

# 사용 중인 pip 확인
which pip # Linux/macOS
where pip # Windows (cmd/powershell)

출력은 .venv 디렉터리 내부의 경로를 가리켜야 합니다.

단계 3: 활성화된 환경 내에서 작업

환경이 활성화되면 이제 다음을 수행할 수 있습니다.

  • 패키지 설치: 패키지는 활성 환경 에만 설치됩니다.
(.venv) $ pip install requests
(.venv) $ pip install flask pandas numpy
  • 설치된 패키지 확인: 이 환경에 특정한 내용을 확인합니다.
(.venv) $ pip list
(.venv) $ pip freeze

(pip freezerequirements.txt에 적합한 출력을 제공합니다).

  • Python 스크립트 실행: 스크립트는 환경의 Python 인터프리터와 설치된 패키지를 사용합니다.
(.venv) $ python my_script.py

단계 4: 가상 환경 비활성화

가상 환경 내에서 프로젝트 작업을 마쳤으면 비활성화하여 셸 세션을 시스템의 기본 Python 설치를 사용하는 정상 상태로 되돌릴 수 있습니다.

간단히 다음 명령을 실행합니다:

(.venv) $ deactivate

이 명령은 환경이 활성화되면 위에서 언급한 모든 셸과 운영 체제에서 보편적으로 작동합니다.

deactivate를 실행한 후 다음을 확인할 수 있습니다:

  1. (.venv) 접두사가 셸 프롬프트에서 사라집니다.
  2. which python/where python을 실행하면 이제 전역 Python 인터프리터를 다시 가리킵니다.

모범 사례 요약

  • 이름: .venv 또는 venv를 사용하십시오. .venv가 점점 표준이 되고 있습니다.
  • 위치: 프로젝트의 루트 폴더 내에 직접 환경 디렉터리를 생성하십시오.
  • .gitignore: 가장 중요하게, 프로젝트의 .gitignore 파일에 가상 환경 디렉터리 이름을 추가하십시오. 이렇게 하면 수 기가바이트에 달하는 설치된 패키지를 버전 제어에 실수로 커밋하는 것을 방지할 수 있습니다. 커밋해야 하는 것은 requirements.txt 파일입니다.
# .gitignore
.venv/
  • 프로젝트당 하나: 일반적으로 각 개별 프로젝트는 자체 가상 환경을 가집니다.
  • Requirements 파일: requirements.txt를 유지 관리하십시오:
# 생성/업데이트
(.venv) $ pip freeze > requirements.txt

# 새 환경에서 파일로부터 설치
(.venv) $ pip install -r requirements.txt

일반적인 활성화 문제 해결

  • "Command not found" / "No such file or directory":
  • .venv 폴더가 포함된 올바른 디렉터리에 있습니까?
  • 경로를 올바르게 입력했습니까 (.venv/bin/activate vs .venv\Scripts\activate.bat)? 슬래시와 백슬래시를 확인하십시오.
  • 사용 중인 셸에 맞는 올바른 명령을 사용하고 있습니까 (bash/zsh/fish의 경우 source, cmd의 경우 직접 경로, PowerShell의 경우 .ps1)?
  • PowerShell 실행 정책 오류: Set-ExecutionPolicy에 대한 위의 PowerShell 활성화 섹션을 참조하십시오. 보안 설정을 변경하기 전에 주의하고 영향을 이해하십시오.
  • 권한 거부됨: 활성화 스크립트에 실행 권한이 있는지 확인하십시오 (일반적으로 venv에 의해 올바르게 설정되지만, 필요한 경우 Linux/macOS에서 ls -l로 확인하십시오).

결론

Python 가상 환경을 활성화하는 것은 모든 Python 개발자에게 필수적인 기술입니다. 이는 효과적인 종속성 관리, 프로젝트 격리 및 재현 가능한 빌드로 가는 관문입니다. 정확한 명령어는 OS와 셸에 따라 약간 다르지만, 핵심 과정은 프로젝트로 이동하여 적절한 활성화 스크립트(일반적으로 .venv/bin/ 또는 .venv/Scripts/ 내부에 있음)를 실행하고 수정된 셸 프롬프트를 통해 활성화를 확인하는 것입니다. 일단 숙달되면 venv 사용은 제2의 천성이 되어 더 깔끔하고 안정적이며 충돌 없는 Python 개발 워크플로우를 가능하게 합니다. 시작하는 모든 새로운 Python 프로젝트에 습관을 들이십시오!

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하십니까?

개발 팀이 최대 생산성으로 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하십니까?

Apidog는 귀하의 모든 요구 사항을 충족하며 Postman을 훨씬 저렴한 가격으로 대체합니다!
button