Python 패키징

PythonBeginner
지금 연습하기

소개

본 실습에서는 전통적인 Distutils 라이브러리를 사용하여 Python 프로젝트를 패키징하는 기본 구성 요소인 setup.py 스크립트를 소개합니다. setup.py의 목적, 구조, 그리고 이를 사용하여 Python 모듈을 설치 가능하게 만드는 방법을 학습하게 됩니다. 실습이 끝날 때쯤에는 기본적인 setup.py 파일을 생성하고 이를 사용하여 간단한 Python 패키지를 설치하게 될 것입니다.

소개

이 단계에서는 Distutils 를 사용하여 모듈을 빌드, 배포 및 설치하는 모든 활동의 중심으로서 setup.py 스크립트의 역할을 이해하게 됩니다.

설정 스크립트 (setup script) 는 Distutils 를 사용하여 모듈을 빌드, 배포 및 설치하는 핵심입니다. 주요 목적은 Distutils 에 모듈 배포에 대한 정보를 설명하여, 모듈에 대해 작동하는 다양한 명령들이 올바르게 수행되도록 하는 것입니다.

setup.py 파일은 Python 프로젝트의 중심에 있습니다. 이 파일은 프로젝트에 대한 모든 메타데이터를 설명합니다. 풍부한 메타데이터를 제공하기 위해 추가할 수 있는 필드가 많지만, 필수적인 필드는 세 가지뿐입니다.

  • name: 패키지의 이름입니다. Python Package Index (PyPI) 에 패키지를 게시하려면 이 이름은 고유해야 합니다.
  • version: 패키지의 현재 버전입니다. 이는 사용자가 다른 릴리스를 구별하는 데 도움이 됩니다.
  • packages: 배포에 포함될 모든 Python 패키지 목록입니다.

setup.py 파일이 있으면 Python 패키지를 환경에 쉽게 설치할 수 있습니다. 권장되는 방법은 현재 디렉터리에서 pip을 사용하여 패키지를 설치하는 것입니다. setup.py 파일이 있는 동일한 디렉터리에서 터미널에서 다음 명령을 실행하십시오.

pip install .

이 명령은 모듈을 빌드하고 설치하는 프로세스를 처리하여 다른 Python 스크립트에서 가져와 사용할 수 있게 합니다. 다음 단계에서는 setup.py 파일을 생성하고 이 명령을 실행할 것입니다.

예제

이 단계에서는 setup.py 스크립트의 기본 예제를 검토하고 우리 프로젝트를 위해 하나를 생성할 것입니다. 이 예제에는 필수 필드뿐만 아니라 라이선스 및 README.txt 파일에서 읽어온 긴 설명과 같은 선택적 정보도 포함됩니다.

먼저, 여러분을 위해 준비된 프로젝트 디렉터리로 이동합니다. IDE 왼쪽의 파일 탐색기 (file explorer) 를 사용하여 pythonCheatsheet 디렉터리를 확인하십시오. 그 안에는 pipenv 하위 디렉터리와 README.txt 파일이 있습니다.

이제 ~/project/pythonCheatsheet 디렉터리 내에 setup.py라는 새 파일을 생성합니다. 파일 탐색기에서 pythonCheatsheet 폴더를 클릭한 다음 "새 파일 (New File)" 아이콘을 클릭하고 이름을 setup.py로 지정합니다.

다음 코드를 새로 생성한 setup.py 파일에 복사하여 붙여넣으십시오.

## setup.py: define package metadata for distribution
from distutils.core import setup

setup(
   name='pythonCheatsheet',  ## Package name (must be unique on PyPI)
   version='0.1',  ## Version number
   packages=['pipenv',],  ## List of packages to include
   license='MIT',  ## License type
   long_description=open('README.txt').read(),  ## Read description from file
)

이 스크립트를 분석해 보겠습니다.

  • from distutils.core import setup: 이 줄은 스크립트의 주요 진입점인 setup 함수를 가져옵니다.
  • name='pythonCheatsheet': 우리 패키지의 이름을 정의합니다.
  • version='0.1': 초기 버전을 설정합니다.
  • packages=['pipenv',]: Distutils 에게 포함될 패키지가 pipenv 디렉터리 안에 있음을 알려줍니다.
  • license='MIT': 패키지가 배포되는 라이선스를 지정합니다.
  • long_description=open('README.txt').read(): 패키지에 대한 자세한 설명을 제공하기 위해 README.txt의 내용을 읽습니다.

이제 setup.py 파일이 준비되었으므로, IDE 하단의 터미널 패널에 있는 + 아이콘을 클릭하여 터미널을 엽니다. 현재 디렉터리가 ~/project/pythonCheatsheet인지 확인하십시오. cd ~/project/pythonCheatsheet를 실행하여 이동할 수 있습니다.

설치 명령을 실행합니다.

pip install .

pip 이 패키지를 빌드하고 설치함에 따라 터미널에 출력이 표시됩니다. 출력은 패키지가 설치되었다는 확인으로 끝나면서 다음과 유사하게 보일 것입니다.

Processing /home/labex/project/pythonCheatsheet
Building wheels for collected packages: pythonCheatsheet
  Building wheel for pythonCheatsheet (setup.py) ... done
  Created wheel for pythonCheatsheet: pythonCheatsheet-0.1-py3-none-any.whl
  Stored in directory: /tmp/pip-wheel-xxxxx
Successfully built pythonCheatsheet
Installing collected packages: pythonCheatsheet
Successfully installed pythonCheatsheet-0.1

설치를 확인하려면 pip을 사용하여 설치된 패키지 목록을 보고 새 패키지를 필터링할 수 있습니다.

pip list | grep pythonCheatsheet

버전과 함께 패키지 목록이 표시되어야 합니다.

pythonCheatsheet  0.1

축하합니다! 성공적으로 setup.py 파일을 생성하고 Python 패키지를 설치했습니다.

요약

본 실습에서는 Distutils 를 사용하여 Python 프로젝트를 배포하는 데 있어 setup.py 스크립트의 근본적인 역할을 학습했습니다. 패키지에 필수적인 메타데이터 필드인 name, version, packages에 대해 다루었습니다. 마지막으로, 실제 setup.py 파일을 생성하고, license 및 long_description과 같은 추가 메타데이터를 포함했으며, pip install . 명령을 사용하여 패키지를 로컬 환경에 성공적으로 설치했습니다. 이제 여러분 자신의 Python 프로젝트를 배포 가능하게 만드는 데 필요한 기본 지식을 갖추게 되었습니다.