venv는 Python의 표준 라이브러리 중 하나로, 별도의 패키지나 모듈 환경을 제공하는 가상 환경을 만들기 위해 사용할 수 있습니다. 즉, 프로젝트마다 다른 버전의 패키지를 사용하고 싶을 때, 이를 격리된 환경에서 관리할 수 있게 도와준다.
실질적으로 거의 대부분의 python 프로젝트에서 활용한다고 볼 수 있습니다. 각 프로젝트에서 사용하는 라이브러리의 버전에 따라 충돌이 발생할 수 있기 때문에 호환 가능한 버전 관리 목적이라고 보면 될 것 같습니다. (spring 의 pom.xml, build.gradle등에서 버전 관리하는 것과 유사)
venv의 장점
- 격리된 환경: 다양한 프로젝트에서 서로 다른 패키지나 Python 버전의 충돌 없이 작업할 수 있습니다.
- 버전 관리: 프로젝트별로 필요한 패키지와 그 버전을 쉽게 관리할 수 있습니다.
- 의존성 문제 해결: 각 프로젝트의 의존성을 명확하게 알 수 있으므로 배포나 협업 시 문제를 최소화 할 수 있습니다.
venv의 단점
- 추가적인 공간: 각 가상 환경마다 패키지를 복제하기 때문에 디스크 공간이 추가로 필요합니다.
- 관리: 여러 가상 환경을 사용하면 관리가 복잡해질 수 있습니다.
venv 사용 방법
가상 환경 생성
Windows:
python -m venv [가상환경명]
Linux/Mac:
python3 -m venv [가상환경명]
가상 환경 활성화
Windows:
[가상환경명]\Scripts\activate
Linux/Mac:
source [가상환경명]/bin/activate
가상 환경 비활성화
모든 운영체제에서:
deactivate
패키지 설치
활성화된 가상 환경에서,
pip install [패키지명]
requirements.txt를 활용한 패키지 설치
requirements.txt 파일 내의 패키지를 한번에 모두 설치할 때는,
pip install -r requirements.txt
가상 환경 내 패키지 리스트 확인 및 requirements.txt 만들기
가상환경 내 패키지 리스트 확인:
pip freeze
가상환경 내 패키지를 requirements.txt 만들기
pip freeze > requirements.txt
가상환경 삭제하기
가상 환경은 결국 폴더 형태로 저장되기 때문에, 해당 폴더를 삭제하면 가상 환경도 함께 삭제된다.
활용 예시
가상 환경 생성 및 활성화
Windows:
python -m venv myenv
myenv\Scripts\activate
Linux/Mac:
python3 -m venv myenv
source myenv/bin/activate
패키지 설치 및 확인
pip install requests
pip freeze
가상 환경 종료
deactivate
추가 Tip
PowerShell에서 가상 환경 활성화 안될 때 활성화 시키기
Windows:
myenv\Scripts\activate.ps1
보안 오류로 가상 환경 활성화가 안될 때
+ .\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : 보안 오류: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
위와 같은 문구가 뜨면서 가상환경 진입이 안될 때는 윈도우 실행정책이 막혀 있는 경우입니다.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
cmd창에 위와 같이 입력하여 정책을 변경하면 가상환경이 활성화 되는 것을 확인 할 수 있습니다.
Leave a comment