본문 바로가기

개발

초보자를 위한 파이썬 가상 환경과 Conda: 배경, 원리, 그리고 실전 활용법

반응형

파이썬 개발을 시작하면서 가장 먼저 마주하는 혼란스러운 개념 중 하나가 바로 '가상 환경(Virtual Environment)'일 것입니다. "왜 가상 환경을 써야 할까?", "pip install 하면 그냥 설치되는 거 아닌가?", "Conda는 또 뭐지?"와 같은 질문을 많이 하게 됩니다. 하지만 가상 환경은 파이썬 프로젝트를 효율적이고 안정적으로 관리하기 위한 필수적인 도구입니다. 이 글에서는 파이썬이 가상 환경을 지원하는 배경과 이유, 기본적인 원리를 먼저 살펴본 후, 파이썬 기본 가상 환경 도구와 강력한 패키지 및 환경 관리 도구인 Conda의 사용법까지 개발자 주니어개발 입문자의 눈높이에 맞춰 쉽고 자세하게 알아보겠습니다!

목차

  • 파이썬 가상 환경, 왜 필요할까요? (배경과 이유)
    • 패키지 의존성 충돌 문제
    • 프로젝트별 격리의 중요성
  • 파이썬 가상 환경의 원리: 독립적인 공간 만들기
  • 파이썬 기본 가상 환경 도구: venv와 pip
    • venv를 이용한 가상 환경 생성 및 활성화
    • pip를 이용한 패키지 설치 및 관리
    • requirements.txt로 의존성 공유하기
  • Conda: 패키지, 의존성, 환경을 한 번에!
    • Conda의 특징: 언어 agnostic
    • Conda 환경 생성 및 활성화
    • Conda를 이용한 패키지 설치
    • Conda 환경 관리: 삭제, 목록 확인
  • venv vs Conda: 어떤 것을 선택해야 할까요?
  • 파이썬 가상 환경과 Conda, 이것만 기억하세요!

파이썬 가상 환경, 왜 필요할까요? (배경과 이유)

파이썬 가상 환경은 여러 파이썬 프로젝트를 동시에 개발할 때 발생할 수 있는 문제들을 해결하기 위해 고안되었습니다.

패키지 의존성 충돌 문제

파이썬 프로젝트는 Django, Flask, Numpy, Pandas 등 다양한 외부 라이브러리(패키지)에 의존합니다. 문제는 각 프로젝트가 요구하는 패키지의 '버전'이 다를 수 있다는 점입니다. 예를 들어:

  • 프로젝트 A: requests 패키지 버전 2.20이 필요
  • 프로젝트 B: requests 패키지 버전 2.25가 필요

만약 파이썬 시스템 전체에 패키지를 설치(글로벌 설치)한다면, 프로젝트 A를 위해 requests 2.20을 설치하면 프로젝트 B가 제대로 동작하지 않고, 반대로 프로젝트 B를 위해 requests 2.25를 설치하면 프로젝트 A가 고장 날 수 있습니다. 이러한 문제를 패키지 의존성 충돌이라고 부릅니다.

프로젝트별 격리의 중요성

가상 환경은 각 파이썬 프로젝트가 독립적인 작업 공간을 가질 수 있도록 합니다. 이는 마치 각 프로젝트를 위한 독립된 작은 파이썬 시스템을 만드는 것과 같습니다. 이렇게 격리된 환경에서는 프로젝트 A에 필요한 requests 2.20을 설치해도 프로젝트 B의 환경에 전혀 영향을 주지 않습니다.

파이썬 가상 환경의 원리: 독립적인 공간 만들기

파이썬 가상 환경은 기본적으로 다음과 같은 원리로 작동합니다.

  1. 독립적인 파이썬 인터프리터 복사본: 가상 환경을 생성하면, 시스템에 설치된 파이썬 인터프리터의 경량화된 복사본이 가상 환경 디렉토리 내에 생성됩니다.
  2. 독립적인 site-packages 디렉토리: 파이썬 패키지들이 설치되는 site-packages 디렉토리 또한 가상 환경 내에 독립적으로 생성됩니다. pip install 명령을 사용하면 모든 패키지는 이 가상 환경의 site-packages에만 설치됩니다.
  3. 환경 변수 조작: 가상 환경을 '활성화(activate)'하면, 시스템의 PATH 환경 변수가 변경되어 이제 python 명령어를 입력했을 때 시스템 전역 파이썬 대신 가상 환경 내의 파이썬 인터프리터가 실행되도록 합니다. 이 원리를 통해 가상 환경 내의 패키지들이 우선적으로 사용됩니다.

파이썬 기본 가상 환경 도구: venv와 pip

파이썬 3.3 버전부터 표준 라이브러리에 포함된 venv 모듈은 가장 기본적인 가상 환경 생성 도구입니다. pip는 파이썬 패키지를 설치하고 관리하는 데 사용되는 도구입니다.

venv를 이용한 가상 환경 생성 및 활성화

가상 환경 생성:myenv라는 이름의 가상 환경 디렉토리가 생성됩니다. (이름은 자유롭게 지정 가능)

python -m venv myenv

가상 환경 활성화 (Windows PowerShell)

./myenv/Scripts/Activate.ps1

가상 환경 활성화 (Windows Command Prompt):

myenv\Scripts\activate.bat

가상 환경 활성화 (macOS/Linux):가상 환경이 활성화되면 터미널 프롬프트 앞에 가상 환경 이름(예: (myenv))이 표시됩니다.

source myenv/bin/activate

가상 환경 비활성화:

deactivate

pip를 이용한 패키지 설치 및 관리

가상 환경이 활성화된 상태에서 pip 명령어를 사용하면, 해당 가상 환경에만 패키지가 설치됩니다.

  • pip install <패키지이름>: 특정 패키지 설치.
  • pip install <패키지이름>==<버전>: 특정 버전의 패키지 설치.
  • pip list: 현재 가상 환경에 설치된 패키지 목록 확인.
  • pip uninstall <패키지이름>: 특정 패키지 삭제.

requirements.txt로 의존성 공유하기

다른 개발자와 협업하거나 프로젝트를 배포할 때, 프로젝트가 어떤 패키지들을 필요로 하는지 알려주는 파일이 requirements.txt입니다.

현재 환경의 패키지 목록 저장:이 명령은 현재 활성화된 가상 환경에 설치된 모든 패키지와 그 버전을 requirements.txt 파일에 기록합니다.

pip freeze > requirements.txt

requirements.txt를 이용해 패키지 설치: 새로운 환경에서 프로젝트를 시작하거나, 다른 개발자가 내 프로젝트를 이어받을 때, 이 파일을 이용해 필요한 모든 패키지를 한 번에 설치할 수 있습니다.

pip install -r requirements.txt

Conda: 패키지, 의존성, 환경을 한 번에!

Conda는 파이썬뿐만 아니라 R, Java 등 다양한 언어의 패키지와 환경을 관리할 수 있는 강력한 오픈 소스 시스템입니다. 특히 데이터 과학 분야에서 널리 사용됩니다. Conda는 패키지 관리자이자 환경 관리자 역할을 동시에 수행합니다.

Conda의 특징: 언어 agnostic

  • Conda는 파이썬 패키지 외에 시스템 레벨의 라이브러리(예: NumPy, SciPy와 같은 과학 계산 패키지가 의존하는 C/C++ 라이브러리)까지 함께 관리할 수 있어, 복잡한 데이터 과학 환경 구축에 매우 유리합니다.

Conda 환경 생성 및 활성화

Conda는 Anaconda 또는 Miniconda를 설치하면 사용할 수 있습니다.

 

1. Conda 가상 환경 생성:mycondaenv라는 이름으로 파이썬 3.9 버전을 사용하는 새로운 Conda 환경을 생성합니다.

conda create --name mycondaenv python=3.9

2. Conda 환경 활성화:활성화되면 터미널 프롬프트 앞에 환경 이름((mycondaenv))이 표시됩니다.

conda activate mycondaenv

3. Conda 환경 비활성화

conda deactivate

Conda를 이용한 패키지 설치

Conda 환경이 활성화된 상태에서 conda install 명령어를 사용하면 해당 Conda 환경에 패키지가 설치됩니다.

  • conda install <패키지이름>: Conda 채널에서 패키지 설치.
  • conda install -c <채널이름> <패키지이름>: 특정 채널에서 패키지 설치.
  • conda list: 현재 Conda 환경에 설치된 패키지 목록 확인.
  • conda install pip: Conda 환경 내에 pip를 설치하여, Conda로 찾을 수 없는 패키지는 pip로 설치할 수도 있습니다. (권장되는 순서는 conda 먼저 사용 후 pip)

Conda 환경 관리: 삭제, 목록 확인

  • conda env list: 모든 Conda 환경 목록 확인.
  • conda remove --name mycondaenv --all: mycondaenv 환경과 그 안에 설치된 모든 패키지 삭제.

venv vs Conda: 어떤 것을 선택해야 할까요?

특징 venv (파이썬 기본) Conda (Anaconda/Miniconda)
관리 대상 파이썬 패키지만 관리 파이썬, R 등 언어 및 시스템 라이브러리 관리
설치 방식 파이썬 설치 시 기본 제공 별도 설치 필요 (Anaconda/Miniconda)
용도 일반적인 파이썬 웹 개발, 스크립트 등 데이터 과학, 머신러닝, 복잡한 과학 계산 등
장점 가볍고 파이썬에 내장되어 사용하기 쉬움 강력한 패키지/환경 종속성 관리, 다양한 언어 지원
단점 시스템 라이브러리 종속성 관리는 어려움 설치 용량이 크고, 초기 진입 장벽이 있을 수 있음

일반적인 파이썬 웹 개발이나 간단한 스크립트 작성에는 venv만으로도 충분합니다. 하지만 데이터 과학, 머신러닝, 복잡한 과학 계산 등 시스템 레벨의 라이브러리 의존성이 있는 프로젝트에서는 Conda가 훨씬 강력하고 유용한 도구가 될 수 있습니다.

파이썬 가상 환경과 Conda, 이것만 기억하세요!

파이썬 개발에서 가상 환경을 사용하는 것은 패키지 의존성 충돌을 방지하고, 프로젝트별로 독립적이고 안정적인 개발 환경을 구축하는 필수적인 습관입니다. venv는 파이썬에 내장된 기본적인 가상 환경 도구이며, pip는 패키지 관리를 담당합니다. 반면 Conda는 파이썬 외의 다른 언어 및 시스템 라이브러리까지 포괄적으로 관리할 수 있는 강력한 대안입니다. 여러분의 프로젝트 특성과 필요한 환경 관리 수준에 따라 venv와 Conda 중 적절한 도구를 선택하여 효율적인 개발 워크플로우를 구축하시길 바랍니다!

반응형