[개발] 파이썬

10.3. 배포

브랜든정 2024. 12. 30. 13:30
반응형

파이썬 배포와 패키징: setuptools로 PyPI 업로드하기

파이썬은 현대의 개발자들에게 필수적인 도구로 자리 잡고 있습니다. 특히, 파이썬의 강력한 패키징 시스템과 함께 사용하면 개발_workflow의 효율성을 크게 향상시킬 수 있습니다. 이 글에서는 파이썬 배포와 패키징에 대한 기초부터 PyPI 업로드까지를 자세히 다루겠습니다. 이를 통해, 여러분은 자신의 파이썬 프로젝트를 효율적으로 배포하고 관리할 수 있을 것입니다.

1. 파이썬 패키징의 중요성

파이썬 패키징은 프로젝트의 유지보수와 확장성을 높이는 데 매우 중요합니다. 패키징을 통해, 여러분은 프로젝트의 의존성 관리, 버전 관리, 배포 자동화 등 다양한 측면에서 효율성을 높일 수 있습니다. 파이썬에서 가장 널리 사용되는 패키징 도구 중 하나는 setuptools입니다.

2. setuptools 설치 및 설정

setuptools를 설치하기 위해서는 먼저 pip을 통해 설치를 진행합니다.

pip install setuptools

설치가 완료되면, setuptools를 사용하여 프로젝트를 패키징할 수 있습니다. setuptools를 사용하기 위해서는 setup.py 파일을 생성해야 합니다. 이 파일은 프로젝트의 메타데이터와 의존성을 정의하는 역할을 합니다.

3. setup.py 파일 작성

setup.py 파일을 작성하는 방법에 대해 자세히 알아보겠습니다.

3.1. 메타데이터 정의

setup.py 파일의 첫 부분에는 메타데이터를 정의하는 코드가 들어갑니다. 예를 들어, 프로젝트의 이름, 버전, 설명 등을 정의합니다.

from setuptools import setup, find_packages

setup(
    name='my_project',
    version='1.0.0',
    description='My project description',
    author='Your Name',
    author_email='your_email@example.com',
    packages=find_packages(),
    install_requires=[
        'requests',
        'numpy'
    ],
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Programming Language :: Python :: 3.9',
        'Programming Language :: Python :: 3.10'
    ]
)

3.2. 의존성 관리

install_requires 옵션을 사용하여 프로젝트의 의존성을 관리할 수 있습니다. 예를 들어, requestsnumpy를 의존성으로 추가했습니다.

3.3. 분류자

classifiers 옵션을 사용하여 프로젝트의 분류자를 정의할 수 있습니다. 예를 들어, 개발 상태, 목적 аудience, 라이선스 등 다양한 분류자를 정의할 수 있습니다.

4. PyPI에 업로드하기

PyPI에 프로젝트를 업로드하기 위해서는 twine을 사용하는 것이 좋습니다. twine은 PyPI에 패키지를 업로드하는 데 사용되는 도구입니다.

4.1. twine 설치

twine을 설치하기 위해서는 다음 명령어를 사용합니다.

pip install twine

4.2. 패키지 업로드

twine을 사용하여 패키지를 업로드하기 위해서는 다음 명령어를 사용합니다.

twine upload dist/*

이 명령어를 실행하면, dist 폴더에 있는 패키지를 PyPI에 업로드합니다. 업로드가 완료되면, PyPI에 프로젝트가 등록되어 있습니다.

5. 배포 자동화

배포 자동화를 위해 setuptoolstwine을 사용하여 CI/CD 파이프라인을 구축할 수 있습니다. 예를 들어, GitHub Actions를 사용하여 배포 자동화를 구축할 수 있습니다.

5.1. GitHub Actions 설정

GitHub Actions를 사용하여 배포 자동화를 구축하기 위해서는 .github/workflows 폴더에 deploy.yml 파일을 생성합니다.

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Python 3.10
        uses: actions/setup-python@v2
        with:
          python-version: '3.10'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install setuptools twine

      - name: Build and deploy
        run: |
          python setup.py sdist bdist_wheel
          twine upload dist/*

이 설정을 통해, GitHub Actions가 자동으로 배포 과정을 진행합니다.

6. 결론

파이썬 배포와 패키징은 프로젝트의 유지보수와 확장성을 높이는 데 매우 중요합니다. setuptoolstwine을 사용하여 프로젝트를 패키징하고 PyPI에 업로드할 수 있습니다. 또한, 배포 자동화를 위해 CI/CD 파이프라인을 구축할 수 있습니다. 이 방법을 통해, 여러분은 자신의 파이썬 프로젝트를 효율적으로 배포하고 관리할 수 있을 것입니다.

반응형

'[개발] 파이썬' 카테고리의 다른 글

11.2. TensorFlow, Keras로 시작하는 딥러닝 기초  (0) 2024.12.30
11.1. Scikit-learn  (0) 2024.12.30
10.2. 코드 품질과 디버깅  (0) 2024.12.30
10.1. 유닛 테스트  (0) 2024.12.30
9.2.2. 비동기 프로그래밍  (2) 2024.12.30