Python 개발 환경을 conda로 관리하고 있다면, 먼저 아래 글을 한 번 읽어보는 걸 추천합니다.

아래 글은 이 내용을 간단히 되짚고, 실제로 쓰는 conda 환경 생성·삭제·복제·이전 방법 위주로 정리한 실전 가이드입니다.


1. Anaconda vs Miniconda 한 줄 요약



요약하면 이렇게 볼 수 있습니다.

  • Anaconda:
    → 데이터 과학/머신러닝에 자주 쓰는 패키지를 한꺼번에 깔아주는 종합선물세트 배포판

  • Miniconda:
    → conda 환경/패키지 관리 기능만 제공하고,
    필요한 패키지는 개발자가 직접 골라서 설치하는 미니멀 배포판

저는 “가볍게 시작하고, 필요한 순간에만 패키지를 추가하는 스타일” 을 선호하기 때문에,
웬만하면 Miniconda를 설치해서 그 위에 환경을 쌓아 올리는 방식을 추천합니다.

  • 디스크를 덜 쓰고

  • 업데이트가 덜 번거롭고

  • 프로젝트별로 딱 필요한 것만 설치해서 환경이 덜 지저분해지는 장점이 있습니다.


2. conda 환경 개념 빠르게 짚고 가기

conda의 “환경(environment)”은 쉽게 말해 프로젝트 별로 분리된 Python/패키지 세트입니다.

  • env A: Python 3.10 + Django 4 + 특정 라이브러리 버전

  • env B: Python 3.11 + FastAPI + 전혀 다른 라이브러리 셋

이렇게 서로 다른 버전이 서로 간섭하지 않도록 격리하는 것이 핵심입니다.

환경 관련해서 자주 쓰는 기본 명령은 다음과 같습니다.

# 현재 설치된 conda 환경 목록 보기
conda env list

# 또는
conda info --envs

3. conda 환경 생성하기



3.1 가장 기본적인 환경 생성

conda create -n myenv python=3.12
  • -n myenv : 환경 이름을 myenv로 지정

  • python=3.12 : Python 3.12 버전 사용

환경이 만들어진 뒤에는:

conda activate myenv   # 환경 활성화
conda deactivate       # 환경 비활성화

3.2 생성하면서 자주 쓰는 패키지 같이 설치

conda create -n myenv python=3.12 numpy pandas matplotlib

이미 설치된 Miniconda의 기본 채널에서 위 패키지들을 함께 설치한 새 환경이 만들어집니다.

이후에는:

conda activate myenv
conda install scikit-learn
# 혹은
pip install requests

처럼 필요할 때마다 패키지를 추가해 나가면 됩니다.


4. conda 환경 삭제하기

더 이상 쓰지 않는 환경은 과감히 지우는 것이 좋습니다.
(conda환경은 꽤 디스크 공간을 잡아먹는 편입니다. )

# myenv 환경 삭제
conda env remove -n myenv

삭제 후 확인:

conda env list

myenv가 목록에서 사라졌다면 정상입니다.


5. conda 환경 복제하기 (clone)

실험용으로 이것저것 깔아본 환경을
“비슷한 설정이지만 이름만 다른 환경”으로 하나 더 만들고 싶을 때 유용합니다.

# existing-env 를 기준으로 new-env 라는 복제 환경 생성
conda create -n new-env --clone existing-env
  • 패키지 버전까지 그대로 가져오기 때문에,

  • “기존 환경은 그대로 두고, 새로운 실험을 하고 싶을 때” 많이 쓰는 패턴입니다.

복제 후:

conda activate new-env

해서 잘 동작하는지 확인해보면 됩니다.


6. conda 환경 이전하기 (export / import)

다른 PC나 서버로 환경을 옮기고 싶을 때는
환경을 파일로 내보낸 뒤(import/export) 그 파일을 기반으로 새 환경을 만드는 방식이 가장 일반적입니다.

6.1 환경 내보내기(export) – YAML 파일 생성

# myenv 환경을 env.yml 파일로 내보내기
conda env export -n myenv > env.yml

env.yml 파일 안에는:

  • 환경 이름

  • 사용 중인 채널 정보

  • 설치된 패키지와 버전

이 기록되어 있습니다.

히스토리 기반 최소 목록만 내보내고 싶다면

이미 의존성까지 포함된 풀 리스트 대신,
“내가 직접 설치한 패키지만” 기록하고 싶을 때는:

conda env export -n myenv --from-history > env-min.yml

이렇게 만들어 두면, 다른 환경에서 create 했을 때
필요한 의존성은 다시 conda가 알아서 풀어줍니다.

6.2 다른 곳(또는 같은 머신)에서 환경 생성하기

다른 PC, 서버, 혹은 같은 머신의 새로운 위치에서:

conda env create -f env.yml

이렇게 하면 env.yml에 정의된 이름과 패키지 버전으로 환경이 생성됩니다.

  • env.yml 안에 name: myenv 라고 적혀 있다면, 그 이름으로 만들어짐

  • 이름을 바꾸고 싶으면 env.yml 파일의 name: 부분을 직접 수정한 후 실행

예를 들어, env.ymlname: myenvname: myenv-dev로 바꾼 다음:

conda env create -f env.yml
conda activate myenv-dev

하면, 같은 구성을 이름만 다르게 가져올 수 있습니다.


7. 자주 쓰는 conda 패턴 정리

Miniconda를 기반으로 환경을 꾸릴 때 자주쓰는 유용한 패턴들을 정리해 보겠습니다.

  1. 프로젝트마다 환경 하나씩

    • proj-a-env, proj-b-env 처럼 프로젝트 이름을 따서 환경 이름을 짓기

    • 서로 충돌 없이 버전 관리가 편해집니다.

  2. 환경은 최소 설치 후 필요할 때만 확대

    • 처음엔 python + 몇 개 기본 패키지만 설치

    • 개발하며 필요한 순간에 conda install 또는 pip install 로 확장
      → 이게 Miniconda의 미니멀 철학과 잘 맞습니다.

  3. 중요한 환경은 주기적으로 export

    • 릴리스 시점, 배포 전에:

      bash conda env export -n proj-a-env --from-history > proj-a-env.yml

    • 이 파일을 저장소에 커밋해두면,
      같은 환경을 팀원이 쉽게 재현할 수 있습니다.

  4. 대규모 변경 전에는 clone으로 백업

    • 대규모 패키지 업그레이드, Python 버전 변경 전에:

      bash conda create -n proj-a-backup --clone proj-a-env

    • 문제가 터지면 백업 환경으로 빠르게 되돌아갈 수 있습니다.


python conda환경 이미지

마무리: 가볍게 시작해서, 필요할 때 확장하기

정리해보면 선택지는 단순합니다.

  • Anaconda는 “필요할 수도 있는 패키지”를 한 번에 깔아놓고 시작하는 방식

  • Miniconda는 “진짜 필요한 것만 그때그때 설치”하면서 가볍게 가져가는 방식

요즘처럼 프로젝트마다 요구하는 Python 버전, 패키지 조합이 제각각인 상황에서는
Miniconda + 잘 관리된 conda 환경 조합이 훨씬 유연합니다.

환경을:

  • 만들고(conda create)

  • 켜고(conda activate)

  • 지우고(conda env remove)

  • 복제하고(conda create --clone)

  • 다른 곳으로 옮기는 것(conda env export / conda env create)

이 정도만 익혀두면, 새 프로젝트를 시작할 때마다
“이번엔 뭘 지우고 뭘 다시 설치해야 하지?” 같은 고민에서 꽤 자유로워집니다.

앞으로 새 프로젝트를 시작할 때는:

  1. Miniconda 기준으로 새 환경을 하나 만들고

  2. 그 안에 정말 필요한 패키지만 설치해 보세요.

  3. 환경 구성이 마음에 들면 env.yml로 내보내 두고,
    다음 프로젝트에서는 그걸 살짝 수정해서 재사용하면 됩니다.

이 패턴이 몸에 한 번 익고 나면, conda 환경 관리는 더 이상 귀찮은 일이 아니라 “프로젝트를 깨끗하게 유지해주는 든든한 습관”이 될 것이라고 생각합니다.