Python venv 참고 자료

유용한 venv 명령어 몇 가지

Page content

Venv는 가상 환경 관리 명령줄 도구. Anaconda에 비해 훨씬 간단한 도구입니다. 다음은 유용한 venv 명령입니다.

파이썬이 나무 상자에 스크루드라이버로 열려고 합니다.

파이썬에서 패키지 및 환경 관리에 있어, 개인적으로 보다 우수한 도구가 있다고 생각합니다. 바로 uv입니다. 자세히 알아보세요: uv - 새로운 파이썬 패키지, 프로젝트 및 환경 관리자

파이썬 venv 빠른 참고

가상 환경 생성

  • 표준 명령 (Python 3.3+):

    python -m venv venv
    

    이 명령은 현재 디렉토리에 venv라는 이름의 가상 환경을 생성합니다.

  • 특정 Python 버전 사용 (설치된 경우):

    python3.10 -m venv venv
    

    또는 virtualenv 사용:

    virtualenv -p /usr/local/bin/python3.10 venv
    

    (이 작업은 virtualenv 패키지가 필요합니다).

가상 환경 활성화

  • Windows:
    .\venv\Scripts\activate
    
  • macOS/Linux:
    source venv/bin/activate
    
    쉘 프롬프트는 이제 환경 이름을 표시해야 합니다.

가상 환경 비활성화

  • 모든 플랫폼:
    deactivate
    
    이 명령은 시스템의 기본 Python으로 돌아갑니다.

패키지 설치

  • pip 사용:
    pip install
    
    예시:
    pip install numpy pandas
    
  • pip 업그레이드 (권장):
    python -m pip install --upgrade pip
    

패키지 목록 저장 및 요구사항 파일에서 설치

  • 현재 환경의 패키지 목록 저장:
    pip freeze > requirements.txt
    
  • 요구사항 파일에서 설치:
    pip install -r requirements.txt
    
    이 명령을 실행하기 전에 가상 환경이 활성화되어 있어야 합니다.

가상 환경 삭제

deactivate
rm -rf <env path>

파이썬 가상 환경 관리 시 흔한 실수

가상 환경을 활성화하지 않음

  • 가상 환경을 활성화하지 않고 명령을 실행하는 것은 일반적인 실수로, 전역 환경이나 잘못된 venv에 패키지를 설치하게 되어 의존성 충돌 및 예측 불가능한 동작을 초래할 수 있습니다.

패키지 버전을 고정하지 않음

  • requirements.txt에서 >= 대신 ==와 같은 정확한 버전을 지정하지 않으면 재현성에 문제가 생깁니다. 정확한 버전 고정은 모든 사람이 동일한 패키지 버전을 사용하도록 보장하여 배포 또는 협업 시 예상치 못한 문제를 방지합니다.

전역 환경과 가상 환경을 섞음

  • 전역 환경에 패키지를 설치하거나 전역 환경과 가상 환경을 섞는 것은 특히 다른 프로젝트가 호환되지 않는 패키지 버전을 요구할 경우 충돌을 일으킬 수 있습니다. 항상 올바른 환경에서 작업해야 합니다.

가상 환경을 버전 관리에 포함함

  • 가상 환경 디렉토리(예: venv/)를 버전 관리에 포함하면 저장소가 불필요하게 팽창하게 되며, 이는 불필요합니다. 항상 .gitignore에 venv 디렉토리를 추가하여 저장소를 깔끔하게 유지해야 합니다.

개발 및 프로덕션 의존성을 구분하지 않음

  • 개발 및 프로덕션 의존성을 구분하지 않으면 프로덕션 환경이 불필요하게 비대하거나 보안 취약할 수 있습니다. 각각에 대해 별도의 요구사항 파일이나 구성 섹션을 사용해야 합니다.

환경 설정 및 자동화 문서화 부족

  • 환경 설정 단계를 문서화하지 않거나 자동화 과정(스크립트나 Makefile을 통해)을 생략하면 새로운 기여자에게 온보딩이 어려워지고 환경을 재현하는 것이 더 복잡해집니다.

이용되지 않은 가상 환경 정리하지 않음

  • 시간이 지나면서 사용되지 않은 가상 환경이 쌓이면 디스크 공간을 낭비하고 혼란을 초래할 수 있습니다. 오래된 venv를 정기적으로 삭제하여 작업 공간을 깔끔하게 유지해야 합니다.

시스템 파이썬 및 패키지 관리자 경계를 무시함

  • 시스템 파이썬을 수정하거나 pip와 시스템 패키지 관리자를 섞는 것은 시스템 도구를 손상시키고 진단이 어려운 문제를 일으킬 수 있습니다. 항상 프로젝트 의존성에 venv를 사용하고 시스템 관리 패키지에 간섭하지 않도록 해야 합니다.

요약 표

실수 영향
가상 환경을 활성화하지 않음 잘못된 환경에 패키지를 설치함
패키지 버전을 고정하지 않음 예측 불가능한 빌드, 재현이 어려운 버그
전역 환경과 가상 환경을 섞음 의존성/버전 충돌
가상 환경 디렉토리를 버전 관리에 포함함 저장소가 불필요하게 팽창함
개발 및 프로덕션 의존성을 구분하지 않음 불필요하게 비대하거나 보안 취약한 프로덕션 환경
문서화 및 자동화 부족 온보딩이 어려우며, 설정이 불일치함
오래된 환경을 정리하지 않음 디스크 공간 낭비 및 혼란
시스템 파이썬 또는 패키지를 수정함 시스템 불안정 및 도구 손상

가상 환경을 항상 활성화하고 의존성을 고정하고 환경을 분리하며 명확한 문서화를 유지함으로써 이러한 흔한 실수를 피할 수 있습니다.

Conda와 가상 환경의 재현성에 대한 주요 차이점

기능 Conda 환경 파이썬 가상 환경 (venv/virtualenv)
관리 범위 파이썬 패키지 비파이썬 의존성(예: 시스템 라이브러리, 컴파일러)을 관리 pip를 통해 오직 파이썬 패키지만 관리
파이썬 버전 관리 환경별로 어떤 파이썬 버전도 지정 및 설치 가능 시스템에 설치된 파이썬 버전 사용
플랫폼 간 일관성 모든 의존성을 관리하므로 OS(Windows, macOS, Linux) 간 더 일관된 동작 시스템 라이브러리에 의존하므로 OS에 따라 다를 수 있음
패키지 출처 Conda 저장소(사전 컴파일된 바이너리, 과학 스택) 사용 PyPI(pip)를 통해 파이썬 패키지 사용
재현성 복잡한, 과학적, 또는 다언어 프로젝트에 대해 더 높음; 전체 환경(conda env export)을 내보낼 수 있음 순수 파이썬 프로젝트에 대해 좋음; 시스템 의존성이 포함된 경우 재현성이 떨어질 수 있음
비파이썬 의존성 설치 및 관리 가능(예: OpenBLAS, libpng) 관리 불가; 별도로 설치해야 함
환경 내보내기/불러오기 conda env export / conda env create로 완전한 재현성 가능 pip freeze > requirements.txt / pip install -r requirements.txt (파이썬 패키지만)
성능 대규모 과학 패키지(예: numpy, pandas)에 대해 더 빠르고 신뢰성 있음 Windows에서는 소스 코드로 컴파일해야 할 수 있음
복잡성 약간 더 높은 설정 및 관리 오버헤드 기본 파이썬 프로젝트에 적합한 가볍고 간단한 환경

주요 포인트 요약

  • Conda 환경은 파이썬 및 비파이썬 의존성이 필요한 프로젝트 또는 플랫폼 간 정확한 복제가 중요한 경우에 재현성에 이상적입니다. Conda는 Python 자체, 라이브러리, 심지어 컴파일러까지 포함한 전체 스택을 관리하여 복잡한 환경을 공유하고 재현하는 것이 더 쉬워지며, 특히 데이터 과학 및 연구 맥락에서 유리합니다.

  • 파이썬 가상 환경(venv/virtualenv)은 순수 파이썬 프로젝트에서 파이썬 의존성을 분리하는 데 가볍고 훌륭합니다. 그러나 시스템 수준 또는 비파이썬 의존성을 관리하지 않기 때문에, 외부 라이브러리 또는 특정 시스템 구성에 의존하는 프로젝트에서는 재현성이 약화될 수 있습니다.

  • 환경 내보내기 및 공유: Conda는 전체 환경 사양(conda env export)을 내보낼 수 있어 모든 의존성과 버전을 포함하여 다른 곳에서 정확히 재현할 수 있습니다. 가상 환경에서는 pip freeze가 오직 파이썬 패키지만 기록하고 시스템 의존성이나 파이썬 인터프리터 버전은 기록하지 않습니다.

  • 결론
    과학적, 플랫폼 간 또는 복잡한 프로젝트에서 최대한의 재현성을 원한다면 Conda를 사용하세요. 시스템 의존성이 문제가 되지 않는 가볍고 순수 파이썬 프로젝트에서는 파이썬 가상 환경을 사용하세요.

유용한 링크