본문 바로가기
Data Analysis

[Python] 가상환경 설정

by Urban communicator 2024. 10. 8.

Python을 사용할 때 가상환경에서 구동할 필요가 있다. Python에서 가상환경을 설치하는 주된 이유는 프로젝트별 독립적인 환경을 유지하고 패키지 관리에 편리하기 때문이다. 

 

1. 프로젝트 간 패키지 충돌 방지

  • 각 프로젝트는 서로 다른 패키지와 버전을 요구할 수 있다. 예를 들어, 하나의 프로젝트는 Django 3.x 버전을 사용하고, 다른 프로젝트는 Django 4.x 버전을 사용할 수 있다.
  • 만약 모든 프로젝트가 동일한 전역 환경(global environment)에서 실행된다면, 서로 다른 패키지 버전이 충돌하여 에러가 발생할 수 있다.
  • 가상환경을 사용하면, 각 프로젝트마다 별도의 패키지 버전을 유지할 수 있어 충돌을 방지할 수 있다.

2. 프로젝트 이식성 향상

  • 가상환경은 requirements.txt 같은 파일을 통해 필요한 패키지 리스트를 다른 사람과 공유하기 쉽게 한다.
  • 팀 프로젝트나 배포 시, 다른 환경에서도 동일한 의존성을 설치하여 코드가 일관되게 동작하도록 보장할 수 있다.

3. 시스템 환경 오염 방지

  • Python 전역 환경에 패키지를 설치하면, 불필요한 패키지들이 쌓여 관리가 어려워지고 시스템이 오염될 수 있다.
  • 가상환경을 사용하면, 전역 환경에 영향을 주지 않고도 필요한 패키지들을 설치하고 관리할 수 있다. 또한, 프로젝트가 완료되면 가상환경을 삭제하여 정리할 수도 있다.

4. Python 버전 관리

  • 일부 프로젝트는 특정 Python 버전에서만 호환되는 경우가 있다.
  • 가상환경은 다양한 Python 버전을 사용할 수 있게 해주어 프로젝트마다 적합한 Python 버전을 설치하고 사용할 수 있다.

5. 안정성 및 테스트 편의성

  • 가상환경을 사용하면 새 패키지나 라이브러리를 설치할 때, 기존 환경에 문제가 생길 걱정 없이 실험하고 테스트할 수 있다.
  • 새로운 패키지를 설치해도 해당 가상환경에만 영향을 미치므로, 다른 프로젝트 환경에는 영향을 주지 않는다.

예시

가령, Project A는 Flask 2.x를 필요로 하고, Project B는 Flask 1.x를 필요로 한다고 가정한다. 만약 별도의 가상환경 없이 프로젝트를 관리한다면, 특정 프로젝트를 위해 패키지 버전을 재설치할 때마다 충돌이 발생한다. 이를 방지하기 위해 각 프로젝트에 별도의 가상환경을 설정하고, 해당 프로젝트에 필요한 버전의 Flask를 독립적으로 설치한다.

 

가상환경은 이렇게 프로젝트마다 독립적인 환경을 제공하여 패키지 관리와 시스템 오염 방지를 돕고, 이를 통해 개발 과정의 효율성과 안정성을 높일 수 있다. 

 

 

 

그럼 이제 실제 설치 방법을 알아보자. 

 

1. Anaconda Prompt 실행

  • 아래와 같이 Anaconda Prompt를 실행한다. 

 

 

 

그러면 아래와 같이 Anaconda Prompt가 실행된다. 

 

 

 

2. 가상환경 생성

  • Anaconda Prompt에서 아래의 코드를 입력해 가상 환경을 생성한다. evn_name에 가상환경의 이름을 집어 넣는다. 
  • 만약 특정 Python 버전을 설치하고 싶다면 두 번째 줄과 같이 버전을 함께 입력한다. 
  • Python 버전 뒤에 'anaconda'를 입력하면 Anaconda에서 제공하는 기본 패키지(pandas, numpy, matplotlib)가 함께 설치된다. 기본적인 Python 패키지가 포함되어 있으니 함께 설치해주는 것이 좋다.
conda create -n env_name
conda create -n env_name Python=3.8
conda create -n env_name Python=3.8 anaconda

 

 

3. 가상환경 활성화

  • 생성한 가상환경을 활성화하고 싶으면 아래의 코드를 입력한다. 
  • 아래 코드에서 env_name은 가상환경 이름을 의미한다. 
  • 가상환경을 실행하면 시스템 환경이 (base)에서 (env_name)으로 변경된다. 
conda activate env_name

 

 

4. 가상환경 비활성화

  • 사용 중인 가상환경을 비활성화 하고 싶으면 아래와 같이 코드를 입력한다.
  • 코드를 실행하면 시스템 환경이 가상환경(env_name)에서 기본 환경(base)로 바뀌는 것을 확인할 수 있다. 
conda deactivate

 

5. 가상환경 목록 

  • 가상환경은 사용자가 원하는 대로 만들 수 있다. 가상환경 목록은 아래의 코드를 통해 불러올 수 있다. 
conda env list

 

 

6. 가상환경 삭제

  • 물론 가상환경은 삭제가 가능하다. 
  • 아래 코드에서 env_name은 마찬가지로 가상환경의 이름을 의미한다. 
conda env remove -n env_name

 

 

댓글