가상환경 – Conda 사용법

By | 9월 14, 2025
가상환경 - Conda 사용법

Conda를 활용한 Python 가상 환경 관리

파이썬 개발에서 가상 환경(Virtual Environment)은 프로젝트마다 독립적인 실행 환경을 만들어 의존성 충돌을 막고 프로젝트의 재현성을 보장하는 데 필수적인 요소입니다. Conda는 파이썬을 포함해 다양한 프로그래밍 언어와 라이브러리를 관리하는 강력한 도구입니다. 이 글에서는 Conda를 이용해 가상 환경을 관리하는 방법을 자세히 알아봅니다.


1. 가상 환경이 필요한 이유

  • 의존성 충돌 방지: 여러 프로젝트를 진행할 때 각 프로젝트가 요구하는 라이브러리 버전이 다를 수 있습니다. 가상 환경을 사용하면 각 프로젝트를 분리된 공간에 두어 이러한 충돌을 방지할 수 있습니다. 예를 들어, 한 프로젝트는 pandas 1.0을, 다른 프로젝트는 pandas 2.0을 필요로 할 때 각기 다른 가상 환경을 사용해 문제를 해결할 수 있습니다.
  • 프로젝트 격리: 가상 환경은 특정 프로젝트에 설치된 패키지가 다른 프로젝트나 시스템 전체의 파이썬 환경에 영향을 미치지 않도록 보호합니다.
  • 재현성 확보: environment.yml 파일을 통해 특정 환경에 설치된 패키지 목록과 버전을 정확히 기록할 수 있습니다. 이를 통해 다른 개발자가 동일한 환경을 손쉽게 재현할 수 있어 협업 및 배포 과정에서 매우 중요합니다.
  • 시스템 환경 보호: 시스템에 기본으로 설치된 파이썬 환경이 손상될 위험 없이 자유롭게 패키지를 설치하고 제거할 수 있습니다.

2. Conda 설치 및 준비

Conda는 AnacondaMiniconda를 설치하면 함께 제공됩니다.

  • Anaconda: 데이터 과학 및 과학 계산에 필요한 다양한 패키지(예: Jupyter, NumPy, Pandas)가 미리 포함된 종합 배포판입니다.
  • Miniconda: Conda와 파이썬만 포함된 최소한의 배포판입니다. 필요한 패키지를 직접 설치하며 환경을 구축할 때 유용합니다.

설치가 완료되면 터미널이나 명령 프롬프트에서 conda --version을 입력해 정상적으로 설치되었는지 확인할 수 있습니다.


3. Conda 가상 환경 관리 명령어

3.1. 환경 생성

가상 환경을 새로 만드는 기본 명령어입니다.

  • 기본 환경 만들기: conda create –name myenv이 명령어는 myenv라는 이름의 빈 가상 환경을 생성합니다.
  • 특정 파이썬 버전 지정: conda create –name myenv python=3.9myenv 환경에 파이썬 3.9를 설치합니다.
  • 패키지 함께 설치: conda create –name myenv python=3.9 numpy pandas scikit-learn파이썬 3.9와 함께 numpy, pandas, scikit-learn 패키지를 동시에 설치합니다. 필요한 패키지는 공백으로 구분해 추가할 수 있습니다.
  • 특정 패키지 버전 지정: conda create –name myenv python=3.9 pandas=1.3.5pandas 패키지를 1.3.5 버전으로 설치합니다.
  • 환경 경로 지정: conda create –prefix ./envs/myproject-env python=3.9–prefix 또는 -p 옵션을 사용하여 기본 경로가 아닌 원하는 위치에 환경을 만들 수 있습니다.

3.2. 환경 활성화 및 비활성화

가상 환경을 사용하려면 먼저 활성화해야 합니다.

  • 환경 활성화: conda activate myenv이 명령어를 실행하면 터미널 프롬프트 앞에 환경 이름이 나타납니다(예: (myenv) user@machine:~$). 활성화된 환경에서 설치하는 모든 패키지는 해당 환경 내에만 존재합니다.
  • 환경 비활성화: conda deactivate현재 활성화된 환경을 비활성화하고 이전 환경(또는 base 환경)으로 돌아갑니다.

3.3. 환경 목록 확인

생성된 가상 환경의 목록을 확인합니다.

  • 환경 목록 보기: conda info –envs 또는 conda env list이 명령어를 실행하면 Conda 환경 목록과 각 환경의 경로가 표시됩니다. 현재 활성화된 환경은 별표(*)로 구분됩니다.

3.4. 패키지 설치 및 관리

활성화된 환경 내에서 패키지를 설치, 업데이트, 삭제할 수 있습니다.

  • 패키지 설치: conda install numpy활성화된 환경에 numpy 패키지를 설치합니다. Conda의 의존성 해결 기능이 필요한 다른 패키지들도 자동으로 설치합니다.
  • 특정 버전 패키지 설치: conda install pandas=1.3.5
  • 패키지 업데이트: conda update numpy
  • 모든 패키지 업데이트: conda update --all
  • 패키지 제거: conda remove numpy
  • 설치된 패키지 목록: conda list활성화된 환경에 설치된 모든 패키지와 버전을 나열합니다.

3.5. 환경 복제

기존 환경과 동일한 환경을 새로 만듭니다.

  • 환경 복제: conda create –name new_env –clone old_envold_env라는 환경을 new_env라는 이름으로 복제합니다.

3.6. 환경 제거

더 이상 필요 없는 가상 환경을 삭제합니다.

  • 환경 제거: conda remove –name myenv –allmyenv 환경과 그 안의 모든 패키지를 제거합니다. 이 작업은 되돌릴 수 없으므로 신중해야 합니다.

4. environment.yml 파일을 통한 환경 재현성 확보

environment.yml 파일은 가상 환경의 모든 설정(이름, 채널, 의존성 패키지)을 정의하는 YAML 형식의 파일입니다. 이 파일을 사용하면 환경의 재현성을 보장하고 다른 사람과 환경을 쉽게 공유할 수 있습니다.

4.1. environment.yml 파일 생성 (내보내기)

현재 활성화된 환경의 설정을 파일로 내보냅니다.

  • 환경 내보내기: conda env export > environment.yml현재 환경의 모든 패키지, 버전, 채널 정보를 environment.yml 파일에 저장합니다. 이 파일을 버전 관리 시스템(예: Git)으로 공유하여 다른 개발자가 동일한 환경을 구축할 수 있도록 합니다.

4.2. environment.yml 파일로 환경 생성

공유받은 environment.yml 파일을 사용해 동일한 가상 환경을 만듭니다.

  • 파일로 환경 생성: conda env create -f environment.yml파일에 정의된 대로 새 가상 환경을 생성합니다. 파일 내 name: 필드가 있으면 해당 이름으로 환경이 만들어집니다.

4.3. environment.yml 예시

name: my_project_env
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.9
  - numpy=1.23.0
  - pandas=1.5.0
  - scikit-learn
  - matplotlib
  - pip:
    - beautifulsoup4==4.11.1
    - requests>=2.28.1

설명:

  • name: 가상 환경 이름입니다.
  • channels: Conda가 패키지를 찾는 저장소 목록입니다. conda-forge는 커뮤니티에서 관리하는 인기 있는 채널이고, defaults는 Conda의 기본 채널입니다.
  • dependencies: 이 환경에 설치할 패키지 목록입니다. 특정 버전(python=3.9)을 지정하거나, 최소 버전(requests>=2.28.1)을 설정할 수 있습니다. pip: 섹션은 Conda 채널에 없는 PyPI 패키지를 설치할 때 사용합니다.

4.4. environment.yml 파일로 환경 업데이트

environment.yml 파일이 변경되었을 때 기존 환경을 업데이트합니다.

  • 환경 업데이트: conda env update –file environment.yml –name my_project_envmy_project_env 환경을 environment.yml 파일 내용에 맞게 업데이트합니다.

5. Conda와 Pip의 관계

Conda는 자체 패키지 관리자이지만, pip을 함께 사용할 수 있습니다.

  • Conda 환경 내에서 Pip 사용: Conda 환경이 활성화된 상태에서 pip install package_name을 실행하면 해당 환경에 패키지가 설치됩니다. environment.yml 파일에서도 pip: 섹션을 이용해 pip으로 설치할 패키지를 명시할 수 있습니다.
  • 우선순위: 가능하면 conda install을 사용하는 것이 좋습니다. Conda는 이진 패키지를 다운로드하고 의존성을 더 효과적으로 관리하기 때문입니다. pip은 Conda 채널에 없는 패키지를 설치할 때 사용하며, pip으로 설치한 패키지는 Conda가 의존성을 추적하지 못할 수 있으므로 주의가 필요합니다.

6. Conda 가상 환경 관리 팁

  • 명확한 환경 이름: 프로젝트나 용도를 반영해 my_project_name, data_analysis_env처럼 환경 이름을 명확하게 짓는 것이 좋습니다.
  • 일괄 설치: conda create 명령어를 사용할 때 필요한 패키지를 한 번에 지정하면 의존성 해결 시간을 줄일 수 있습니다.
  • .condarc 파일 설정: .condarc 설정 파일을 통해 Conda의 동작을 사용자 정의할 수 있습니다. 예를 들어, conda config --set auto_activate_base false를 입력하여 시작 시 base 환경이 자동으로 활성화되는 것을 막을 수 있습니다.
  • 정기적 업데이트: conda update condaconda update --all 명령어로 Conda 자체와 환경 내 패키지를 최신 상태로 유지하는 것이 좋습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다