파이썬 프로그램 배포하기 (파이썬 패키지)

김지현·2024년 7월 24일
1

파이썬으로 작성된 프로그램을 배포하는 방법에는 여러 가지가 있다. 각각의 방법을 비교해보자.

압축 파일

가장 간단하고 아날로그적인 방법으로는 코드를 압축하여 배포하는 방법이 있다.
개발자는 requirements.txt에 필요한 패키지 목록을 작성하고 전체 프로젝트를 압축한다. 사용자는 필요한 패키지를 설치하고 프로그램을 실행한다. 사용자의 컴퓨터에 파이썬 설치가 필요하다.

# 사용자

# 패키지 설치
pip install -r requirements.txt

# 프로그램 실행
python run.py

실행 파일(.exe)

다음으로는 .exe 실행 파일을 생성하여 배포하는 방법이 있다. 사용자의 컴퓨터에 파이썬 설치가 필요하지 않지만 속도가 느리다. 개발자는 pyinstaller 패키지를 설치한 뒤 다음의 명령어로 실행 파일을 생성하면 된다.

# 개발자

# 패키지 설치
pip install pyinstaller

# 실행파일 생성
pyinstaller run.py

도커(Docker)

도커를 사용하여 애플리케이션을 배포하면, 애플리케이션과 그 의존성을 포함하는 컨테이너 이미지를 만들어 배포 및 실행 환경의 일관성을 보장하고 복잡한 환경 설정 없이 애플리케이션을 실행할 수 있게 한다. 개발자는 도커 파일을 작성한 뒤 도커 이미지를 빌드 하고 도커 허브와 같은 레지스트리에 이미지를 push하여 배포한다. 사용자는 도커 이미지를 pull 받아 컨테이너를 실행하면 된다.
도커에 대한 글은 따로 존재하므로 여기서는 간략히 정리한다.

파이썬 패키지

파이썬 패키지는 사용자의 컴퓨터에 파이썬이 깔려있다는 가정하에 간단하고 쉬운 방법이라 할 수 있다. 개발자는 setuptools를 사용하여 패키지를 만들고, 이를 PyPI(Python Package Index)에 업로드한다. 사용자는 이 패키지를 설치하여 프로그램을 실행하면 된다.

# 개발자

# setuptools와 wheel 설치
pip install --upgrade setuptools wheel

# 패키지 빌드
python setup.py sdist bdist_wheel

# twine 설치
pip install twine

# PyPI에 배포 (테스트 서버 사용 권장)
twine upload dist/*

---------------------------------------------

# 사용자

# 패키지 설치
pip install program_name

# 프로그램 실행
program_name

file

파이썬 패키지로 배포할 때 setup.py 파일이 반드시 필요하다. 다음과 같이 작성할 수 있다.

from setuptools import setup, find_packages

setup(
    name='my_program',  # 패키지 이름
    version='0.1',  # 패키지 버전
    packages=find_packages(),  # 포함할 패키지
    install_requires=[
        'aiohttp==3.9.5',
        'aiosignal',
        # ... Other dependencies
    ],
    entry_points={
        'console_scripts': [
            'my_program=my_program.console:main',  # 콘솔 명령 설정
        ],
    },
    author='Your Name',  # 작성자 이름
    author_email='your.email@example.com',  # 작성자 이메일
    description='A description of your package',  # 패키지 설명
    long_description=open('README.md').read(),  # 긴 설명
    long_description_content_type='text/markdown',
    url='https://github.com/yourusername/my_program',  # 프로젝트 URL
    classifiers=[
        'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
    ],
    python_requires='>=3.6',  # 최소 파이썬 버전
)

추가적으로 README.md, requirements.txt, MANIFEST.in, LICENSE 등의 파일을 포함하여 사용자 경험을 향상시킬 수 있다.

소스 배포 (.tar.gz) VS 휠 배포 (.whl)

파이썬 패키지를 빌드하면 .tar.gz 파일과 .whl 파일이 생성되는 것을 확인할 수 있다. 이 두 가지를 비교하자면 다음과 같다.

  • 소스 배포(.tar.gz): 소스 코드와 메타데이터를 포함한 압축 파일로, 사용자가 직접 컴파일하고 설치할 수 있다. pip install package-name.tar.gz 또는 python setup.py install 명령으로 설치.
  • 휠 배포(whl): 사전 컴파일된 바이너리 형식으로 빠르고 간편하게 설치할 수 있다. pip install package-name.whl 명령으로 설치.
소스 배포휠 배포
포맷.tar.gz.whl
내용물소스 코드와 메타데이터 포함사전 컴파일된 바이너리와 메타데이터
설치 속도상대적으로 느림매우 빠름
컴파일 필요 여부필요할 수 있음불필요
플랫폼 독립성플랫폼 독립적플랫폼 종속적
사용 예시C 확장 모듈을 포함한 패키지순수 파이썬 패키지 또는 사전 컴파일된 바이너리 포함 패키지

또한 소스 배포(.tar.gz)는 단순히 파일을 압축하여 배포하는 것과는 다르다. 이는 소스 코드와 메타데이터를 포함한 압축 파일로 파이썬 패키지의 표준 구조를 따르며, setup.py 파일을 포함하여 패키지의 설치를 자동화할 수 있도록 한다.

1개의 댓글

comment-user-thumbnail
2024년 8월 12일

깔끔한 설명 고맙습니다~!

답글 달기