🔥알림🔥
① 테디노트 유튜브 - 구경하러 가기!
② LangChain 한국어 튜토리얼 바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs) 바로가기 🙌
④ RAG 비법노트 LangChain 강의오픈 바로가기 🙌
⑤ 서울대 PyTorch 딥러닝 강의 바로가기 🙌

2 분 소요

PYPI는 Python Package Index의 약어로 Python 패키지 저장소의 개념으로 생각하시면 됩니다. 수 많은 개발자들이 본인이 만든 파이썬 소프트웨어를 손쉽게 설치하고 활용할 수 있도록 패키지화 하여 저장소에 업로드를 하는데요. 저장소에 업로드된 패키지를 pip install 패키지명 명령어로 손쉽게 설치할 수 있다는 것이 가장 큰 장점입니다.

파이썬에서 pip 명령어를 활용하여 나만의 패키지를 손쉽게 설치할 수 있는 파이썬 패키지(PYPI)를 만드는 방법과 이를 PYPI에 등록하고 배포하는 방법에 대해 알아보겠습니다.

PYPI 사이트

CleanShot 2023-01-05 at 01.56.09

링크: https://pypi.org/

PYPI에서 등록하고자 하는 프로젝트명 검색

프로젝트 검색

내가 등록하고자 하는 프로젝트 명이 겹치면 등록이 불가하기 때문에, 사전에 등록하고자 하는 프로젝트명을 검색 후 등록이 가능한지 확인합니다.

아래의 예시에서는 teddynote 라는 패키지가 등록 가능한지 검색했는데, 이미 등록이 되어 있기 때문에 해당 이름으로는 등록이 불가합니다. 따라서, 다른 이름을 사용해야 합니다.

프로젝트 검색

이번에는 teddynote-kr 이라는 패키지명으로 검색하였습니다.

teddynote-kr 프로젝트명

유사한 이름이 같이 검색되긴 하지만 정확히 일치하는 패키지명이 검색이 되지 않았으니, teddynote-kr 이라는 패키지명으로는 등록이 가능합니다.

PYPI 회원가입

파이썬 패키지를 등록하고 업데이트하기 위해서는 PYPI 계정이 필요합니다. 따라서 아래의 링크에서 간단히 회원가입을 진행합니다.

링크: https://pypi.org/account/register/

PYPI 회원등록

프로젝트 구성

아래의 예시는 파이썬 패키지명을 teddynote로 등록할 때의 예시입니다.

프로젝트 구성

  1. 노란색 영역: 루트(Root) 폴더이자 프로젝트 폴더명입니다. 폴더명은 프로젝트의 이름을 넣으셔도 되고, 다른 폴더명을 지정해도 크게 상관 없습니다(크게 중요하지 않습니다).
  2. 빨간색 영역: 패키지에 등록하고 싶은 패키지명을 일반적으로 지정합니다.
  3. 초록색 영역: setup.py가 위치해 있어야 합니다. setup.py는 노란색 영역의 프로젝트 루트폴더 하위에 위치해야합니다. 우선, 빈 setup.py 파일을 생성 후 다음 단계에서 적절한 정보를 채웁니다.

setup.py 정보 기입

setup.py 안에는 다음의 내용을 기입합니다. 아래의 내용 기입시 하단에 세부설명을 읽어보시고, 적절한 내용을 채워주시면 됩니다.

setup.py

from setuptools import setup, find_packages

setup(
    name='프로젝트명',
    version='0.0.1',
    description='PYPI tutorial package creation written by TeddyNote',
    author='teddylee777',
    author_email='teddylee777@gmail.com',
    url='https://github.com/teddylee777/teddynote',
    install_requires=['tqdm', 'pandas', 'scikit-learn',],
    packages=find_packages(exclude=[]),
    keywords=['teddynote', 'teddylee777', 'python datasets', 'python tutorial', 'pypi'],
    python_requires='>=3.6',
    package_data={},
    zip_safe=False,
    classifiers=[
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Programming Language :: Python :: 3.9',
    ],
)

  • name: 문자열로 프로젝트명을 기입합니다.
  • version: 프로젝트의 버전을 입력합니다. 보통 0.0.1 형식으로 기입하는데, 버그 수정 정도는 맨 뒤의 버전을 업데이트하고, 작은 기능이 추가되면 중간 숫자를, 아주 중요한 기능 추가나 대규모 변경시에는 첫 번째 위치한 숫자를 업데이트 합니다. 추후 패키지에 수정을 했지만, 버전 업데이트를 하지 않은 경우에는 패키지 업데이트가 안될 수 있으니, 이 점 유의해 주시기 바랍니다.
  • description: 프로젝트 설명을 기입합니다.
  • author: 프로젝트 소유자 닉네임을 기입합니다.
  • author_email: 프로젝트 소유자의 이메일 주소를 기입합니다.
  • url: 프로젝트의 주소(GitHub)를 기입합니다.
  • install_requires: 프로젝트 실행을 위하여 사전에 설치되어야 하는 파이썬 패키지 목록을 열거합니다.
  • keywords: 프로젝트 검색시 노출될 키워드를 등록 합니다.
  • python_requires: 최소 파이썬 설치 버전을 지정합니다. 3.6 버전 이상을 요구한다면 >=3.6이라고 입력할 수 있습니다.

패키지 폴더 하위에 __init__.py 추가

init.py 추가

패키지 폴더 하위에 __init__.py 파일을 생성 후 다음과 같이 버전을 입력합니다.

__init__.py

__version__ = '0.0.1'

추후 패키지 버전 업데이트 시 setup.py 내부에 기입된 버전과 __init__.py 버전 모두 업데이트 해야 합니다.

패키지 빌드

프로젝트 루트 폴더에서 터미널을 열고 다음의 명령어를 실행하여 setuptools 와 wheel을 설치합니다.

pip install setuptools wheel

설치가 완료 되었다면, setup.py 파일이 위치한 경로에서 다음의 명령어를 실행합니다.

python setup.py sdist bdist_wheel

그럼, 업로드할 수 있는 파이썬 패키지가 wheel로 생성됩니다.

PYPI 에 패키지 업로드

드디어, 만든 패키지를 업로드 할 차례입니다. 먼저 twine 패키지를 설치 합니다.

pip install twine

마지막으로 다음의 명령어를 실행하여 패키지를 업로드 합니다.

python -m twine upload dist/*

업로드시, pypi 사용자의 username과 password를 물어봅니다. 회원가입 후 생성한 email 형식의 아이디와 password를 입력 후 엔터를 치면 정상적으로 업로드가 완료됩니다.

댓글남기기