파이썬 의존성 관리

이영락·2024년 9월 11일

개발자 기본기

목록 보기
24/53

파이썬 의존성 관리 방법

목차

계기

: 카카오테크 부트캠프 프로젝트 과정중 langchain 모듈 버전 문제로 타 로컬에서 작동되지 않음. requirement.txt를 만들었으나, 종속성 문제로 설치 오류가 뜸. + fast.ap
관련해서는 requirement.txt가 없었음. + 사용되지 않는 패키지도 requirement.txt로 포함되어 있어서 의문이 들었음

🏖️ python 의존성 관리

  1. Python에서 requirements.txt 파일을 관리할 때, 패키지를 처음에 사용하다가 나중에 사용하지 않게 되면 자동으로 requirements.txt에서 제거되지는 않습니다. 즉, 패키지를 사용하지 않게 되면 이를 수동으로 requirements.txt에서 제거해줘야 함!

1) 기본적인 requirements.txt 관리 방법

  1. 패키지 설치: pip install <패키지명> 명령을 사용하여 패키지를 설치하면, 해당 패키지는 현재 Python 환경에 설치되지만 requirements.txt 파일에 자동으로 추가되지 않습니다. 패키지를 설치할 때 수동으로 requirements.txt 파일을 업데이트해야 합니다.

    pip freeze > requirements.txt

    또는 패키지를 설치할 때 -r 옵션을 사용하여 requirements.txt에 직접 추가할 수도 있습니다:

    pip install <패키지명> --upgrade --requirement requirements.txt
  2. 패키지 제거: 만약 더 이상 사용하지 않는 패키지를 제거하려면 pip uninstall <패키지명>을 사용합니다. 하지만 이 과정에서 requirements.txt 파일은 자동으로 업데이트되지 않기 때문에, 파일에서 해당 패키지를 수동으로 제거하거나 아래와 같은 방법으로 정리해야 합니다.

2) 자동으로 불필요한 패키지 제거 방법

pip 자체는 requirements.txt에서 자동으로 패키지를 제거하는 기능을 제공하지 않지만, 다음과 같은 도구를 사용해 불필요한 패키지를 정리할 수 있습니다:

  1. pip-autoremove:

    • pip-autoremove는 설치된 패키지 중 더 이상 필요하지 않은 패키지를 자동으로 찾아 제거해주는 도구입니다.
    • 설치 방법:
      pip install pip-autoremove
    • 패키지를 제거할 때:
      pip-autoremove <패키지명>
  2. pip-tools:

    • pip-tools는 패키지와 그 의존성 관리를 쉽게 해주는 도구입니다. 특히 pip-sync 명령을 사용하여 requirements.txt에 없는 패키지를 환경에서 제거할 수 있습니다.
    • 설치 방법:
      pip install pip-tools
    • requirements.txt에 맞춰 현재 환경을 동기화:
      pip-sync
  3. pip-chill:

    • pip-chill은 현재 프로젝트에서 사용 중인 패키지만 requirements.txt에 유지해주고, 더 이상 사용하지 않는 패키지를 정리할 수 있게 해줍니다.
    • 설치 방법:
      pip install pip-chill
    • requirements.txt 파일 생성 및 업데이트:
      pip-chill > requirements.txt

3) 수동으로 관리하는 방법

  1. 프로젝트에서 더 이상 사용하지 않는 패키지를 제거하고 싶다면, 먼저 코드를 확인하고 해당 패키지가 더 이상 사용되지 않는 것을 확인합니다.

  2. 패키지를 제거하기 위해:

    pip uninstall <패키지명>
  3. 이후, requirements.txt 파일에서 해당 패키지를 직접 삭제하거나, pip freeze > requirements.txt 명령을 실행해 requirements.txt 파일을 새롭게 생성해주는 방식으로 관리할 수 있습니다.


🏖️ 자동 관리 프로그램

1. pipenv

  • 설명: Python 프로젝트의 의존성 관리와 가상 환경 관리 모두를 도와주는 도구입니다. Pipfile을 통해 패키지 의존성을 관리하고, Pipfile.lock을 사용해 잠긴 의존성을 기록하여 패키지 버전 충돌 문제를 방지합니다.
  • 주요 기능: 가상 환경 관리, 의존성 버전 고정, 패키지 설치/제거.
  • 설치:
    pip install pipenv

2. poetry

  • 설명: Python 프로젝트의 의존성 관리를 보다 간편하게 해주는 도구로, 의존성 관리를 위한 pyproject.toml 파일을 사용합니다. 프로젝트의 패키지 배포 및 관리 기능도 제공합니다.
  • 주요 기능: 의존성 관리, 프로젝트 패키징, 가상 환경 관리.
  • 설치:
    pip install poetry

3. pip-tools

  • 설명: requirements.txt 파일을 효율적으로 관리할 수 있는 도구로, 의존성 관리를 보다 체계적으로 할 수 있도록 지원합니다. 특히 pip-compilepip-sync 명령어를 통해 패키지의 의존성을 쉽게 추적하고 관리할 수 있습니다.
  • 주요 기능: requirements.txt 자동 생성, 의존성 버전 고정, 패키지 동기화.
  • 설치:
    pip install pip-tools

4. conda

  • 설명: 주로 과학 컴퓨팅 및 데이터 과학에서 널리 사용되는 Python 패키지와 가상 환경 관리 도구입니다. conda는 Python뿐만 아니라 다른 언어의 라이브러리도 함께 관리할 수 있으며, 패키지 간의 의존성을 자동으로 처리해줍니다.
  • 주요 기능: 의존성 관리, 가상 환경 관리, 여러 언어 지원.
  • 설치:
    conda install conda

이 도구들을 사용하면 Python 프로젝트의 의존성을 보다 효율적으로 관리할 수 있습니다.

profile
AI Engineer / 의료인공지능

0개의 댓글