공공연히 개발하기 🧑‍💻/Python

[Python] 가상 환경 : Conda, Venv 비교 및 명령어 총정리

공공연히 2024. 10. 6. 22:11

물론 Docker라는 훌륭한 도구가 있지만
간단하게 파이썬 코드를 작성할 때는 오히려 가상 환경이 편할 수도 있다.
오늘은 파이썬의 가상 환경에 대해서만 다룰 예정이다.

Table Of Contents
1. Python의 가상 환경
2. 활용 방법 Conda, Venv
3. conda, venv 명령어 정리 ⭐️
    - 생성, 삭제, 활성화, 비활성화, 복제, 목록 확인
    - 패키지 설치 및 확인, 요구사항 파일로 패키지 설치 
4. 어떤 경우에 사용할까?

 

1. Python의 가상 환경 (Virtual Environment)

각각의 프로젝트를 독립적으로 관리하기 위한 방법으로 의존성, 라이브러리 등을 별도로 관리할 수 있다.
즉, 하나의 로컬 PC에서도 여러가지의 파이썬 환경을 따로 따로 활용할 수 있는 것.

다양한 프로젝트를 진행하다 보면 프로젝트 별로 요구사항이 모두 다르다. 필요한 패키지, 의존 관계, 버전 등
이걸 하나의 환경에서 모두 진행하려다 보면 얽히고 꼬여서 탈이 나기 마련이고
만약 기록조차 해두지 않는다면 개발자 본인도 대혼란을 겪게 될 것이다.

▶️ 가상 환경을 사용하는 이유는 크게 세 가지이다.

· 프로젝트 환경 분리
· 의존성 및 요구사항 관리
· 개발 환경의 일관성 유지

 

2. 가상 환경 활용 방법 (conda, venv)

가장 많이 사용하는 방법은 condavenv 다.

Conda

  • conda Anaconda, Miniconda 제공하는 도구
  • Python뿐만 아니라 다양한 언어와 소프트웨어 패키지의 설치 및 관리가 가능하다
  • 데이터 과학과 머신러닝에 많이 사용된다
  • 시스템 패키지도 설치 가능
  • conda, pip 둘 다 이용 가능

Venv

  • venv는 Python 3.3 버전부터 표준 라이브러리로 제공되는 가상환경 관리 도구
  • Python 환경 격리에 중점
  • Python을 설치하면 기본적으로 포함되어 있어서 따로 설치할 필요가 없다
  • 시스템의 Python 환경에 영향을 주지 않는다
  • 가상 환경에 필요한 패키지는 pip로 설치

 

3. conda, venv 명령어 정리 ⭐️

conda는 Anaconda 혹은 Miniconda를 설치해야 사용할 수 있고
venv는 Python 3.3 버전 이상만 설치하면 바로 사용할 수 있다.

Anaconda는 패키지가 크기 때문에 다양한 기능이 필요하지 않다면
기본 conda만 제공하는 경량 버전인 Miniconda를 설치하는 걸 추천한다.

가상 환경 생성, 삭제

  • conda
# 생성
conda create -n envname python=3.12

# 삭제
conda remove -n envname --all
  • venv
# 생성
python -m venv envname

# 삭제
rm -rf envname

 

가상 환경 활성화, 비활성화

  • conda
# 활성화
conda activate envname

# 비활성화
conda deactivate
  • venv
# 활성화
source envname/bin/activate    #Linux/macOS
envname\Scripts\activate    #Windows

# 비활성화
deactivate

 

가상 환경 목록 확인

  • conda
conda env list

# 또는
conda info --envs
  • venv
    • venv애서 가상 환경의 목록을 확인하고 싶다면 가상 환경을 생성한 경로를 기억해둬야 한다.
    • venv 자체는 모든 가상 환경을 중앙에서 관리하는 것이 아니기 때문에
    • 각 가상 환경을 생성한 프로젝트의 디렉토리 경로에서 확인할 수 있다.
    • 설정한 가상 환경 이름으로 폴더가 생성되어 있다.
    • 여러 가상 환경을 하나의 폴더 내에서 관리한다면 ls ~/venvdir/ 명령어로 확인할 수 있다.

 

가상 환경 복제

  • conda
conda create --name new_envname --clone existing_envname
  • venv
    • venv에는 가상 환경을 복제하는 전용 명령어가 없다.
    • 물리적으로 가상 환경 폴더를 복제하거나
    • 요구사항 파일을 기록해 두었다가 새로운 가상 환경 생성 후 요구사항 파일을 통해 패키지를 설치하는 방법을 사용한다.
    • 두 번째 방식을 이용한 복제는 코드와 환경이 명확하게 기록되므로, 환경 재현성 측면에서 더 권장된다.
    • 물리적으로 복제 : cp -r existing\_envname new\_envname
    • 요구사항 파일 이용 : 가상 환경을 생성하고 하단의 내용을 참고하여 요구사항 파일로 패키지를 설치한다.

 

패키지 설치, 목록 확인

  • conda
# 패키지 설치
conda install packagename

# 패키지 목록 확인
conda list
  • venv
# 패키지 설치
pip install <package_name>

# 패키지 목록 확인
pip list

 

패키지 요구사항 파일 생성 및 requirements.txt 파일로 설치

  • conda
# 요구사항 파일 생성
conda list --export > requirements.txt

# requirements.txt로 설치
conda create --name <env_name> --file requirements.txt
  • venv
# 요구사항 파일 생성
pip freeze > requirements.txt

# requirements.txt 파일로 설치
pip install -r requirements.txt

 

4. 어떤 경우에 사용하면 좋을까?

각자 장단점을 가지고 있기 때문에 어떤 게 더 좋다고 말하기는 어렵지만 필요할 때는 분명 있을 것이다.
뭐든 상황과 프로젝트에 맞게 선택하는 것이 최선의 방법이다.

Conda

  • 데이터 과학, 머신러닝 프로젝트와 같이 여러 복잡한 의존성 및 패키지를 관리해야 할 때
  • Python 외의 다른 언어나 시스템 라이브러리(예: CUDA 등)가 필요한 프로젝트일 때
  • 다양한 데이터 과학 도구(Jupyter Notebook 등)와의 통합이 필요할 때

Venv

  • 가벼운 Python 애플리케이션이나 간단한 프로젝트를 관리할 때
  • Python 외의 다른 언어나 시스템 패키지가 필요하지 않을 때
  • 기본 Python 환경 격리만 필요할 때

즉,

venv 는 Python 프로젝트의 가상 환경을 단순히 격리하는 데 적합하며, 설정 및 실행이 가볍다.
conda는 패키지 관리 및 시스템 라이브러리까지 포함하여 지원하므로 데이터 과학, 머신러닝 등 복잡한 프로젝트에서 매우 유용하다.