본문 바로가기

바닐라 코드/Python

Python 가상환경

파이썬 프로젝트를 시작할 때는 무조건 가상환경을 구축해서 시작하자

가상환경이란?

가상환경은 Python 프로젝트별로 서로 독립된 환경을 만들어주는 도구입니다.

이는 프로젝트 간 라이브러리 충돌을 방지하고, 특정 버전의 패키지를 사용할 수 있도록 해줍니다.


pip와 pipenv 비교 : 설치 및 실행방법

1. pip를 이용한 가상환경 설정

  • pip는 가상환경을 생성하고 직접 활성화 해야 합니다. 

1-1. pip 설치

pip는 Python 패키지를 설치하고 관리하는 도구입니다.

Python 설치 시 기본적으로 포함되지만, 아래 명령으로 설치 여부를 확인할 수 있습니다.

# Python 버전 확인
python --version

# pip 버전 확인
pip --version

 

만약 pip가 설치되지 않았다면, 아래 방법으로 설치하세요.

# get-pip.py 다운로드
curl <https://bootstrap.pypa.io/get-pip.py> -o get-pip.py

# curl: URL에서 데이터를 다운로드할 수 있는 명령줄 도구입니다.
# https://bootstrap.pypa.io/get-pip.py: pip 설치 스크립트가 호스팅되는 URL입니다.
# -o get-pip.py: 다운로드한 내용을 get-pip.py라는 이름의 파일로 저장합니다.
# 현재 작업 디렉토리에 get-pip.py라는 파일이 생성됩니다. 이 파일은 pip 설치 스크립트입니다.

# pip 설치
python get-pip.py

# python: Python 인터프리터를 실행하는 명령어입니다.
# get-pip.py: 방금 다운로드한 스크립트를 실행합니다.
# 스크립트는 pip를 설치하거나, 기존에 설치된 pip를 최신 버전으로 업데이트합니다.

1-2. 가상환경 구성 (venv 사용)

  1. 가상환경 생성
    • myenv는 가상환경의 이름입니다. 원하는 이름으로 변경 가능합니다.
    • python -m venv myenv
    • 위 명령은 myenv 폴더를 생성하고, 독립된 Python 환경을 설정합니다.
  2. 가상환경 활성화
    • Windows:
    myenv\Scripts\activate
    • Mac/Linux:
    source myenv/bin/activate
    
  3. 가상환경 비활성화
    • 가상환경에서 빠져나오고 싶을 때 사용합니다.
    • deactivate

1-3. 패키지 설치

  • 주의사항 반드시 가상환경이 활성화된 상태에서 pip install 명령을 실행해야 설치된 패키지가 해당 가상환경에 포함됩니다.
  1. 패키지 설치
     
    • 위 명령은 Flask 패키지를 설치합니다.
    • 설치된 패키지를 확인하려면:
    pip list
    
  2. requirements.txt로 패키지 관리
    • 현재 가상환경에 설치된 패키지를 파일로 저장:
    pip freeze > requirements.txt
    
    # pip freeze: 현재 설치된 패키지와 버전을 출력합니다.
    # > requirements.txt: 출력 결과를 requirements.txt 파일에 저장합니다.
    
    • 저장된 requirements.txt 파일로 패키지 설치:
    pip install -r requirements.txt
    
    # -r: 파일에 정의된 모든 패키지를 설치합니다.
    

2. pipenv를 이용한 가상환경 설정

  • pipenv는 가상환경 생성과 패키지 관리를 한 번에 처리하는 도구입니다.
  • 가상환경을 활성화 하지 않은 상태라도, 해당 프로젝트 폴더에서 패키지를 설치하면 가상환경에서 설치됩니다.

2-1. pipenv 설치

설치하려면 아래 명령을 사용하세요.

pip install pipenv

설치 확인:

pipenv --version

2-2. 가상환경 생성 및 실행

  1. 패키지 설치와 동시에 가상환경 생성
    • 이 명령은 가상환경을 자동 생성하고, Flask 패키지를 설치합니다.
    • pipenv install flask
  2. 가상환경 활성화
    • pipenv shell
  3. 가상환경 비활성화
    • exit
  4. 자동으로 만들어진 가상환경 경로 확인
pipenv --venv

2-3. 패키지 설치 및 관리

  1. 패키지 설치
    • requests는 HTTP 요청을 다루는 유명한 패키지입니다.
    • 설치된 패키지는 Pipfile에 기록됩니다.
    • pipenv install requests
  2. 개발용 패키지 설치
    • -dev 옵션을 사용하면, 개발에만 필요한 패키지를 따로 관리할 수 있습니다.
    • pipenv install pytest --dev
  3. 패키지 목록 확인
    • 설치된 패키지와 그 의존성을 트리 형태로 출력합니다.
    • pipenv graph
  4. 패키지 제거
    • pipenv uninstall flask

2-4. Pipfile과 Pipfile.lock

  • Pipfile:
    • 프로젝트의 패키지 목록을 정의합니다.
    • 예: Flask, requests 등의 패키지가 기록됩니다.
  • Pipfile.lock:
    • 패키지 버전과 의존성을 잠그는 파일입니다.
    • 이 파일 덕분에 배포 환경에서 동일한 버전의 패키지를 사용할 수 있습니다.
  • pipenv install <패키지명> 명령을 실행하면 자동 생성되는 파일
  • 직접 열어서 수정할 필요는 없습니다.

3. pip vs pipenv 비교

기능  pip (venv 사용)  pipenv
가상환경 생성 및 관리 별도로 venv 사용 자동으로 생성 및 관리
패키지 설치 pip install <패키지명> pipenv install <패키지명>
패키지 목록 관리 requirements.txt 사용 Pipfile 및 Pipfile.lock 사용
설치된 패키지 시각화 제공되지 않음 pipenv graph로 의존성 확인
개발용/배포용 패키지 구분 구분 기능 없음 [packages], [dev-packages] 구분

결론

  • 뭘 사용해야 할지 모르겠다면 그냥 pipenv를 사용하면 된다.