IT 관련/기타

python 가상화 비교(아나콘다, python)

islet2 2025. 7. 8. 15:33

conda와 venv는 프로젝트별로 독립적인 파이썬 환경을 만들어주는 가상 환경 도구이지만, 관리 범위와 목적에서 차이가 있습니다.

 

miniconda 와 파이썬 비교

아나콘다 (Conda) 환경

  • 설명: conda는 아나콘다(Anaconda) 또는 미니콘다(Miniconda)를 설치하면 사용할 수 있는 패키지 및 환경 관리 시스템입니다. 데이터 과학 분야에 특화되어 있으며, 파이썬 버전 자체와 패키지는 물론, 파이썬이 아닌 라이브러리(예: CUDA, MKL 등)까지 통합 관리합니다.
  • 장점:
    • 강력한 의존성 관리: NumPy, SciPy, TensorFlow처럼 복잡한 비(非)파이썬 라이브러리에 의존하는 패키지들을 안정적으로 설치하고 관리할 수 있습니다.
    • 파이썬 버전 관리: 프로젝트마다 다른 버전의 파이썬(예: 3.8, 3.10)을 쉽게 설치하고 전환할 수 있습니다.
    • 데이터 과학에 최적화: 데이터 분석, 머신러닝에 필요한 대부분의 패키지가 사전 컴파일되어 있어 설치가 편리합니다.
  • 단점:
    • 무거운 설치: 아나콘다는 다양한 패키지를 포함하고 있어 초기 설치 용량이 큽니다. (가벼운 버전을 원하면 미니콘다를 사용합니다.)
    • 상대적으로 느림: venv에 비해 환경을 만들거나 패키지를 설치하는 속도가 조금 느릴 수 있습니다.

파이썬 가상 환경 (venv)

  • 설명: venv는 파이썬 3.3 버전부터 파이썬에 기본으로 내장된 가상 환경 도구입니다. 현재 시스템에 설치된 파이썬 인터프리터를 기반으로, 해당 프로젝트만을 위한 독립된 패키지 설치 공간을 만듭니다. 패키지 설치 및 관리는 pip를 사용합니다.
  • 장점:
    • 가볍고 빠름: 파이썬 외에 추가 설치가 필요 없고, 환경 생성 속도가 빠릅니다.
    • 파이썬 표준: 파이썬의 공식적인 가상 환경 방식으로, 대부분의 순수 파이썬 프로젝트에서 표준처럼 사용됩니다.
    • 단순함: 사용법이 매우 간단하고 직관적입니다.
  • 단점:
    • 파이썬 패키지만 관리: 파이썬 패키지만 격리할 뿐, 파이썬 버전 자체나 시스템 라이브러리는 관리하지 못합니다.
    • 복잡한 의존성 한계: C/C++ 컴파일이 필요한 패키지나 시스템 라이브러리와의 의존성이 복잡할 경우 설치에 실패할 수 있습니다.

요약 및 추천

구분 Conda venv
주요 목적 패키지 + 파이썬 버전 + 외부 라이브러리 관리 파이썬 패키지 격리
관리 도구 conda pip
무게 무거움 가벼움
파이썬 버전 관리 가능 불가능 (별도 도구 pyenv 필요)
  • Conda를 추천하는 경우:
    • 데이터 분석, 머신러닝, 과학 컴퓨팅 프로젝트를 진행할 때
    • TensorFlow, PyTorch 등 복잡한 라이브러리를 사용할 때
    • 여러 파이썬 버전을 전환하며 작업해야 할 때
  • venv를 추천하는 경우:
    • 웹 개발(Django, Flask), 간단한 자동화 스크립트 등 순수 파이썬 프로젝트를 진행할 때
    • 가볍고 빠른 환경을 선호할 때
    • 프로젝트의 의존성이 복잡하지 않을 때

Conda 환경 사용법

 

conda는 Anaconda Prompt 또는 터미널에서 모든 명령어를 실행합니다.

  • 환경 생성: python=3.9 부분에 원하는 파이썬 버전을 지정합니다.
    conda create -n my_conda_env python=3.9
    

     

  • 환경 활성화:
    conda activate my_conda_env
    

     

  • 패키지 설치:
    conda install numpy pandas
    

     

  • 설치된 패키지 목록 확인:
    conda list
    

     

    conda lis 와 pip list가 둘 다 사용은 가능하나 conda list가 더 넓은 범위의 정보를 보여주는, 상위 관리자의 시점이고 pip list는 파이썬 패키지에만 집중하는 실무자의 시점입니다.

    conda list vs pip list 비교

    구분 conda list pip list
    표시 범위 파이썬 패키지 + Conda가 관리하는 모든 패키지 (예: openssl 같은 비(非)파이썬 라이브러리 포함) 파이썬 패키지만 표시
    패키지 출처 conda 채널 (anaconda, conda-forge 등) 또는 pip로 설치된 경우 <pip> 또는 pypi 로 출처를 명시 주로 PyPI (출처를 별도로 보여주진 않음)
    상세 정보 패키지명, 버전, 빌드(Build) 정보, 채널 등 상세 정보 제공 패키지명, 버전 정보만 제공

     

  • 환경 비활성화:
    conda deactivate
    

     

  • 환경 목록 보기:  설치되어 있는 가상화 (c:\user\users\.conda\envs\ 폴더에 있음)
    conda env list
    

venv 환경 사용법

venv는 파이썬이 설치된 터미널(Command Prompt, PowerShell, Terminal 등)에서 사용합니다.

  • 환경 생성: my_venv_env 라는 이름의 폴더가 현재 위치에 생성됩니다.
    python -m venv my_venv_env
    

     

  • 환경 활성화: 운영체제에 따라 명령어가 다릅니다.
    • Windows:
    • DOS
      .\my_venv_env\Scripts\activate
      

       

    • macOS / Linux:
      source my_venv_env/bin/activate
      
  • 패키지 설치: pip를 사용합니다.
    pip install django requests
    

     

  • 설치된 패키지 목록 확인:
    pip list
    

     

  • 환경 비활성화:
    deactivate
    

     


두 방식은 파이썬 버전 관리에서 명확한 차이가 있습니다. Conda는 자체적으로 파이썬 버전을 관리할 수 있지만, venv는 기존에 설치된 파이썬에 의존합니다.

Conda에서 사용 가능한 Python 버전

Conda는 다양한 버전의 파이썬을 패키지처럼 취급하여 쉽게 설치하고 관리할 수 있습니다. Anaconda 채널에 등록된 거의 모든 버전의 파이썬을 사용할 수 있습니다.

  • 사용 가능한 파이썬 버전 확인 방법 Anaconda Prompt 또는 터미널에 아래 명령어를 입력하면 설치 가능한 파이썬 버전 전체 목록을 확인할 수 있습니다.이 명령어를 통해 원하는 버전(예: 3.8, 3.9, 3.10, 3.11 등)이 있는지 확인하고, conda create -n myenv python=3.9와 같이 특정 버전을 지정하여 새 환경을 만들 수 있습니다.
    conda search python
    

venv에서 Python 버전 관리

venv는 파이썬 버전을 직접 관리하는 기능이 없습니다.

venv는 가상 환경을 만들 때, 명령어를 실행하는 그 시점의 파이썬 인터프리터를 그대로 복제하여 사용합니다. 예를 들어, 시스템의 기본 파이썬이 3.10 버전이라면, python -m venv myenv 명령으로 생성된 가상 환경은 무조건 파이썬 3.10 버전을 사용하게 됩니다.

  • 다른 버전의 파이썬을 사용하려면? venv로 다른 버전의 파이썬 환경을 만들고 싶다면, 시스템에 해당 파이썬 버전이 이미 설치되어 있어야 합니다.
    • 방법 1: 직접 파이썬 실행 파일 지정 만약 시스템에 3.9와 3.10 버전이 모두 설치되어 있다면, 특정 버전을 직접 지정하여 환경을 만들 수 있습니다.
      # Python 3.9 버전으로 환경 생성
      python3.9 -m venv my_python39_env
      

       

    • 방법 2: pyenv와 같은 외부 도구 사용 pyenv와 같은 별도의 파이썬 버전 관리 도구를 사용하여 시스템에 여러 버전의 파이썬을 설치하고, 원하는 버전을 선택한 뒤에 venv를 생성하는 것이 일반적인 관리 방법입니다.
 

conda 환경에서는 기존 pip와 같은 명령어도 사용 가능하지만 가급적 conda 명령어를 계속 사용하는 것이 가장 좋습니다.

pip도 작동하지만, 두 도구의 작동 방식과 관리 범위가 달라 함께 사용할 경우 환경이 손상될 수 있기 때문입니다.

Conda 환경에서 conda와 pip의 차이점

두 명령어의 가장 큰 차이는 의존성을 검사하고 관리하는 범위에 있습니다.

구분 conda install pip install
관리 범위 파이썬 패키지 + 비(非)파이썬 라이브러리 (MKL, CUDA 등) 파이썬 패키지만 관리
의존성 해결 환경 전체의 모든 패키지를 스캔하여 호환성을 검사하고 설치 (매우 안정적) pip로 설치된 파이썬 패키지 간의 의존성만 확인 (Conda가 설치한 라이브러리는 고려 안 함)
패키지 소스 Anaconda, conda-forge 등 Conda 채널 PyPI (Python Package Index)
환경 정보 Conda 환경의 모든 정보를 알고 관리함 Conda 환경의 정보를 알지 못함

쉽게 말해, conda는 환경 전체를 관리하는 관리자이고, pip는 파이썬 패키지에만 초점을 맞춘 설치 도구입니다. Conda 환경에서 pip를 사용하면, 관리자(conda) 모르게 패키지가 설치되거나 변경되어 충돌이 발생할 수 있습니다.


올바른 사용 순서 및 권장 사항 

Conda 환경을 안정적으로 사용하기 위한 가장 중요한 원칙은 다음과 같습니다.

  1. 항상 conda를 먼저 사용하세요. 필요한 패키지가 있다면, 먼저 conda install <패키지명>으로 설치를 시도하세요. 기본 채널에 없다면 conda-forge 채널을 확인하는 것이 좋습니다.
  2. # 1순위: conda 기본 채널에서 설치
    conda install numpy
    
    # 2순위: conda-forge 채널에서 설치
    conda install -c conda-forge some-package
    

     

  3. conda에 패키지가 없을 때만 pip를 사용하세요. conda의 모든 채널을 찾아봐도 패키지가 없을 경우에만, 최후의 수단으로 pip를 사용합니다.
    pip install some-pip-only-package
    

     

  4. conda와 pip를 섞어서 패키지를 업데이트하지 마세요. 예를 들어 conda로 numpy를 설치한 뒤 pip install --upgrade numpy 명령으로 업그레이드하면, 환경의 의존성 정보가 꼬여 다른 패키지가 오작동할 수 있습니다.

 

 

'IT 관련 > 기타' 카테고리의 다른 글

pyenv 파이썬 버전 관리  (0) 2025.08.25
미니콘다(Miniconda) 설치 방법  (1) 2025.07.11
미니 PC ???  (0) 2025.06.26
블록깨기 게임.  (0) 2025.04.05
간단한 서버 운용을 위한 원보드 컴퓨터 비교  (0) 2025.04.01