liminfo

Conda Reference

Conda 패키지 및 환경 관리 레퍼런스

29개 결과

Conda Reference 소개

Conda 레퍼런스는 복잡한 의존성 스택을 관리하는 데이터 과학자, 머신러닝 엔지니어, Python 개발자를 위한 Conda 전체 워크플로를 검색 가능한 치트 시트로 정리한 자료입니다. 환경 섹션에서는 특정 Python 버전으로 새 환경 생성(conda create -n myenv python=3.11), 환경 활성화/비활성화, conda env list로 전체 환경 목록 조회, --clone으로 기존 환경 복제, conda env remove로 환경 삭제까지 Conda 환경의 전체 라이프사이클을 다룹니다. --prefix를 사용해 특정 파일 시스템 경로에 프로젝트 로컬 환경을 만드는 방법도 포함됩니다.

패키지 섹션에서는 conda install로 단일/다중 패키지 설치, conda install pkg=VERSION으로 특정 버전 고정(예: pytorch=2.1.0), conda update --all로 전체 패키지 업데이트, conda remove로 패키지 제거, conda list로 설치된 패키지 목록 조회, conda search에서 "tensorflow>=2.0" 같은 버전 지정자를 이용한 검색까지 의존성 관리에 필요한 모든 내용을 다룹니다. 채널 섹션에서는 conda config --add channels로 conda-forge 같은 커뮤니티 채널 추가, -c 플래그로 특정 채널에서 설치, conda config --set channel_priority strict로 의존성 충돌 방지를 위한 채널 우선순위 설정을 설명합니다.

설정 및 내보내기 섹션은 재현 가능한 환경 구성의 핵심입니다. conda config --set으로 Conda 전역 동작을 제어하는데, 셸 시작 시 base 환경 자동 활성화를 막는 auto_activate_base false 설정이 자주 사용됩니다. 내보내기 섹션에서는 conda env export > environment.yml로 환경 상태 캡처, conda env create -f environment.yml로 다른 머신에서 재현, OS별 빌드 문자열을 제거해 크로스 플랫폼 호환성을 높이는 --no-builds 옵션을 다룹니다. conda run -n NAME 명령은 환경을 활성화하지 않고도 스크립트를 실행할 수 있어 CI/CD 파이프라인과 자동화 스크립트에 유용합니다.

주요 기능

  • conda create -n NAME python=3.11로 Python 버전을 고정해 환경 생성
  • conda activate, deactivate, env list, env remove로 환경 라이프사이클 관리
  • conda install PKG=VERSION으로 정확한 버전 고정(예: pytorch=2.1.0)
  • conda update --all과 conda update conda로 패키지 및 Conda 자체 업데이트
  • conda config --add channels conda-forge와 -c CHANNEL로 채널 관리
  • conda config --set channel_priority strict로 의존성 해결기 충돌 방지
  • conda env export > environment.yml과 --no-builds로 크로스 플랫폼 재현성 확보
  • conda run -n NAME으로 환경 활성화 없이 명령 실행

자주 묻는 질문

conda와 pip의 차이는 무엇인가요?

conda는 패키지 매니저이자 환경 매니저로, C 라이브러리, CUDA, MKL 같은 비Python 의존성도 일급 패키지로 관리합니다. SAT 솔버로 전체 환경에서 호환 가능한 버전을 해결합니다. pip는 Python 패키지만 관리하고 비Python 라이브러리는 OS에 의존합니다. NumPy, PyTorch, TensorFlow를 사용하는 데이터 과학 환경에서는 conda가 CUDA 및 BLAS 라이브러리와의 호환성을 보장하는데, pip는 이를 보장하지 못합니다.

conda-forge는 무엇이고 왜 사용해야 하나요?

conda-forge는 커뮤니티가 관리하는 채널로, 기본 Anaconda 채널보다 최신 버전의 패키지를 수천 개 제공합니다. 최신 PyTorch, JAX, 과학 패키지를 설치할 때 자주 사용됩니다. conda config --add channels conda-forge로 추가하거나 conda install -c conda-forge pkg로 개별 설치 시 사용합니다. 기본 채널과 함께 사용할 때는 channel_priority strict 설정으로 호환되지 않는 패키지 혼용을 막아야 합니다.

conda config --set auto_activate_base false는 무엇을 하나요?

기본적으로 Anaconda나 Miniconda를 설치하면 새 터미널 세션마다 base 환경이 자동 활성화됩니다. 이는 시스템 Python이나 다른 도구와 충돌할 수 있습니다. auto_activate_base false를 설정하면 이 자동 활성화가 비활성화되어 conda activate base를 직접 실행해야만 base 환경이 활성화됩니다. 시스템 Python이나 pyenv도 함께 사용하는 개발자에게 권장됩니다.

conda env export와 conda list --export의 차이는?

conda env export는 모든 패키지와 정확한 버전, Python 버전, pip 패키지, 채널 정보를 포함한 완전한 environment.yml 파일을 생성합니다. conda env create -f로 전체 환경을 재현하기 위한 용도입니다. conda list --export는 conda install --file과 호환되는 간단한 requirements.txt 형식의 목록을 생성하지만 pip 패키지나 채널 정보는 포함되지 않습니다. 완전한 재현성을 위해서는 conda env export가 권장됩니다.

Conda 환경 내에서 pip를 안전하게 사용하는 방법은?

먼저 conda activate myenv로 대상 환경을 활성화한 후 pip install을 실행합니다. pip는 활성화된 Conda 환경의 site-packages에 설치됩니다. 모범 사례로, 가능한 한 conda로 먼저 설치하고 conda 채널에서 구할 수 없는 패키지에만 pip를 사용하세요. conda env 내에서 --user나 root로 pip를 실행하면 환경 외부에 설치될 수 있으므로 피해야 합니다. conda env export는 pip 설치 패키지를 environment.yml의 pip: 섹션에 캡처합니다.

conda env export --no-builds의 목적은 무엇인가요?

전체 conda env export 출력에는 numpy-1.26.0-py311h8a38eb7_0 같은 빌드 문자열이 포함됩니다. 이 문자열에는 Python 버전, OS ABI, 컴파일 플래그가 인코딩되어 플랫폼 종속적입니다. --no-builds를 사용하면 이 문자열을 제거해 다른 OS(예: Linux vs macOS)에서도 생성 가능한 더 이식성 있는 environment.yml을 만듭니다. 단, 대상 시스템에서 conda가 다른 빌드 변형을 선택할 수 있어 재현성이 약간 떨어질 수 있습니다.

conda create --prefix와 conda create -n의 차이는?

conda create -n NAME은 Conda의 중앙 환경 디렉토리(보통 ~/miniconda3/envs/)에 환경을 생성합니다. conda create --prefix ./envs/myproject는 현재 디렉토리 기준의 지정된 경로에 환경을 생성합니다. 접두사 기반 환경은 Node.js의 node_modules나 Python venv처럼 프로젝트 로컬 격리에 유용하며, 셸 프롬프트에 이름 대신 경로가 표시됩니다. conda activate ./envs/myproject처럼 전체 경로로 활성화해야 합니다.

CI/CD 파이프라인에서 Conda를 사용할 수 있나요?

네. conda run -n NAME 명령은 셸 활성화 없이 환경 내에서 명령을 실행하므로 CI 스크립트에 이상적입니다. 예: conda run -n myenv python -m pytest tests/. 파이프라인 시작 시 conda env create -f environment.yml --name ci-env로 environment.yml에서 환경을 생성할 수도 있습니다. 더 빠른 환경 생성을 위해 C++로 재구현된 Micromamba가 CI에서 자주 사용됩니다.