Package 관리자

감자·2024년 5월 1일
0

TIL Python

목록 보기
16/16
post-thumbnail

Package 관리자에 대해 소개하기 전에, 우선 Package가 무엇인지에 대한 개념부터 짚고 넘어가도록 하겠습니다.

1. Package?

1) 개념

파이썬 패키지란 하나 이상의 모듈을 포함하고, 잘 정의된 구조로 구성된 디렉토리를 의미합니다.

이 디렉토리 안에는 __init__.py 파일이 포함되어 있어야 하며, 이는 해당 디렉토리가 패키지로 처리됨을 파이썬에 알리는 역할을 합니다.

2) 구조

패키지는 기본적으로 아래의 구조를 갖습니다.

my_package/
│
├── __init__.py    # 패키지 초기화 파일
├── module1.py     # 첫 번째 모듈
├── module2.py     # 두 번째 모듈
└── subpackage/    # 서브 패키지
    ├── __init__.py
    └── module3.py

3) 장점

재사용성 : 패키지를 통해 기능을 모듈 별로 나누어 코드 재사용성을 높일 수 있습니다.
네임스페이스 관리 : 모듈 이름 충돌을 방지하려 여러 모듈이 같은 이름의 함수나 변수를 가질 수 있게 합니다.
유지 보수성 : 코드를 잘 구조화하면 뉴지보수가 용이해집니다. 오류 수정, 업데이트 및 개선이 간편해집니다.

4) 배포

패키지는 일반적으로 PyPI(Python Package Index)와 같은 패키지 인덱스를 통해 배포됩니다. setuptools 및 wheel과 같은 도구를 사용하여 패키지를 생성하고, twine을 통해 PyPI에 업로드할 수 있습니다.

2. Package 관리자

Python의 package 관리자는 다양한 도구를 통해 개발자들이 소프트웨어 패키지를 효과적으로 설치, 관리 및 배포할 수 있도록 돕는 역할을 합니다.
지금부터 가장 대표적인 3가지의 관리자에 대해 설명드리겠습니다.

1) pip

개념

pip는 Python Packaging Authority에 의해 관리되는 파이썬의 공식 패키지 인스톨러입니다.
주로 Python Package Index (PyPI)에서 패키지를 다운로드하며, 패키지 설치, 업그레이드 및 제거를 간단한 명령어로 수행할 수 있습니다.
다운받고자하는 패키지를 PyPI 사이트에 검색하면, 해당 패키지에 대한 설명과 함께, 설치 명령어가 나옵니다.

주요 명령어

명령어기능
pip install package_name패키지 설치
pip uninstall package_name패키지 제거
pip freeze설치된 패키지 목록과 버전 출력
pip show package_name특정 패키지에 대한 정보 제공



2) conda

개념

conda는 Anaconda Inc.에 의해 개발된 크로스 플랫폼 패키지 및 환경 관리자입니다.
데이터 과학과 기계 학습 프로젝트에 널리 사용되며, 파이썬 패키지뿐 아니라 R, Scala 등 다른 언어의 패키지도 관리합니다.
conda의 더 자세한 설명은 CONDA에서 확인할 수 있습니다.

주요 명령어

명령어기능
conda create --name env_name새 환경을 생성
conda install package_name환경에 패키지를 설치
conda list환경 내 설치된 패키지 목록을 보여줌
conda update package_name패키지를 업데이트
conda env list생성된 모든 환경을 보여줌
conda remove package_name특정 패키지 제거



3) pipenv

개념

pipenv는 개발 환경을 쉽게 관리할 수 있도록 도와주는 도구로, pip와 venv의 기능을 통합한 것입니다.
Pipfile과 Pipfile.lock을 사용하여 프로젝트의 의존성을 명확하고 안정적으로 관리합니다.

주요 명령어

명령어기능
pipenv install package_namePipfile에 정의된 패키지를 설치
pipenv shell가상 환경에 진입
pipenv uninstall package_name패키지를 제거
pipenv graph설치된 패키지의 의존성 트리를 보여줌
pipenv --rm가상 환경 제거
pipenv lockPipfile.lock을 생성하여 의존성을 잠금



3. 설치 시 고려사항

pip은 단순한 패키지 설치가 필요할 때 효과적입니다.
conda는 복잡한 데이터 과학 프로젝트와 다양한 언어의 패키지를 다룰 때 적합합니다.
pipenv는 개발 프로젝트의 의존성을 명확히 관리하고자 할 때 추천됩니다.

profile
감자와 함께 떠나는 프로그래밍 여행

0개의 댓글