PyPI로 패키지 배포하기:내가 만든 모듈도 pip로 다운받을 수 있다!

Python에는 수많은 써드파티 모듈이 있으며, 이들은 pip 명령어를 통해 쉽게 설치할 수 있습니다.

Windows(윈도우)에서 파이썬에 외부 라이브러리를 추가하는 방법

pip를 통해 설치하는 모든 모듈은 PyPI에 업로드돼 있습니다.  즉, PyPI에 패키지를 업로드하기만 하면 우리 프로젝트도 pip를 통해 설치할 수 있다는 뜻입니다.

1. PyPI 홈페이지에 들어갑니다

pypi 홈페이지

PyPI 홈페이지에 들어가면 위와 같은 사이트를 볼 수 있습니다.

먼저 오른쪽 상단의 Register를 눌러 회원가입을 합니다.
이메일, 닉네임, 비밀번호를 입력하는 것으로 쉽게 가입할 수 있습니다.

메일 확인까지 끝내고 로그인합니다.

2. 프로젝트를 만듭니다

이제 웹브라우저에서 파이썬 IDE(또는 IDLE이라거나)로 돌아갑니다.
그리고 프로젝트를 생성합니다.

PyPI용 파이썬 패키지 프로젝트는 독특한 파일 구조를 가집니다.
아래 이미지를 참고합니다.

패키지 파일 구조

사진에서 가려진 부분은 각자의 패키지 이름을 입력하면 됩니다.

먼저 egg-info, build, dist 폴더는 패키지를 빌드하고, 업로드하는 과정에서 생성되는 폴더이니 신경쓰지 않아도 됩니다.

__init__.py 파일이 포함된 폴더는 패키지 내용이 들어가는 폴더입니다. 폴더 안에 여러 가지 파일이 들어가 있는 것을 볼 수 있습니다.

프로젝트의 루트(root) 폴더에는 LICENSE, README.md, setup.py 파일이 있는 것을 볼 수 있습니다. 이들은 패키지의 설정이나 서문(序文)에 해당하는 내용이 들어가는 파일입니다.

이 구성은 필요 최소한의 구성으로, 위의 파일 이외에도 requirements.txt, MANIFEST.in 등의 파일을 포함할 수 있습니다.

위와 같은 파일 구조를 만들었다면 다음은 파일 내용을 하나씩 채워봅시다.

3. 패키지 파일 내용 채우기

setup.py는 파일 이름처럼 패키지의 설정이 들어있는 파일입니다.
name, license, description 등의 요소들을 지정합니다. 여기서 설정한 값에 따라 빌드가 이루어 집니다.

import setuptools

setuptools.setup(
    name="패키지 이름",
    version="버전",
    license='MIT',
    author="패키지 제작자 이름",
    author_email="패키지 제작자 이메일",
    description="패키지 요약",
    long_description=open('README.md').read(),
    url="github url 등",
    packages=setuptools.find_packages(),
    classifiers=[
        # 패키지에 대한 태그
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent"
    ],
)

README 파일은 패키지에 대한 설명입니다.
마크다운 문법을 알아보고, 그에 따라 작성합니다.
유명한 깃허브 프로젝트의 README 파일을 읽어보면 도움이 됩니다.

LICENSE는 프로젝트의 라이센스에 대해 적은 파일입니다.
MIT나 GPL과 같은 유명한 라이센스는 템플릿이 있으므로 이를 붙여넣기만 하면 됩니다.

requirements.txt는 파일구조 사진에는 없지만 중요한 파일이기에 추가하는 법을 설명합니다.
간단한 명령어를 하나 호출하면 requirements.txt 파일을 만들 수 있습니다.

> pip freeze > requirements.txt

생성된 requirments.txt 파일은 패키지에서 사용된 모듈만 골라내어 패키지 루트 폴더에 옮깁니다.

__init__.py 파일입니다.
간단하게 패키지의 이름만 적어줍니다.

name = "패키지 이름"

4. 패키지 빌드

패키지를 빌드하고 업로드하는 모든 과정은 명령 프롬프트=터미널을 통해서 이루어집니다.

먼저 빌드입니다. setuptools와 wheel 모듈을 설치합니다.

> pip install setuptools wheel

이미 설치되어 있는 분들은 이들이 최신 버전인지 확인합시다.

> python -m pip install --user --upgrade setuptools wheel

이제 빌드합니다.
프로젝트 폴더로 이동해 아래의 명령어를 입력합니다.

> python setup.py sdist bdist_wheel

dist 폴더 밑에 .tar.gz 파일과 .whl 파일이 생성되면 성공입니다.

5. 패키지 업로드

패키지 업로드도 명령어를 통해 진행합니다.

먼저 twine 모듈을 설치합니다.

> pip install twine

그리고 twine을 통해 패키지를 업로드합니다.

> python -m twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: 
Enter your password:

가입할 때 입력했던 닉네임과 비밀번호를 올바르게 입력하면 업로드가 진행됩니다.
물론 현재 디렉토리에 빌드했던 dist 폴더가 있어야 합니다.

이걸로 끝입니다!

더 많은 정보를 위한 참고 링크:
PyPI Tutorial
나만의 파이썬 패키지를 작성하는 법

댓글 3개

  1. 링크해주신 문서에는 뭐가 복잡하게 많이 있어서 겁부터 먹었는데, 직접 써주신 이 글에는 간결하게 정리되어서 큰 도움 되었습니다
    감사합니다!

    좋아요

댓글 남기기