Python package 만들기

이동욱·2022년 1월 17일
0

Intro

  • 개인 프로젝트 하는데 필요한 기능을 만들다가 파이썬 패키지로 만들어서 간단하게 사용하고 싶었습니다.
  • git clone으로 받아와서 사용하게 되면 복잡한 폴더와 파일들도 다 가져와버리는 점을 탈출하고자 진행해보았습니다.
  • PyPI 회원가입이 필요합니다.

Contents

폴더 구조

  • 다음과 같이 폴더구조를 가져갔습니다. 제가 쓴 폴더이름인 instacart_log_generator 와 파일이름인 my_gen_log.py는 추후에 패키지 설치 후 import 단계에서 from instacart_log_generator.my_gen_log import Something 과 같이 나타납니다.
  • 구성하고자 하는 모듈을 구성한 뒤에 중요한 것은 setup.py 작성입니다.

setup.py

  • 요소들에 대해 간단하게 작성해보겠습니다.
  • description은 package아래에 짧은 설명입니다.
  • long_description은 README의 것을 그대로 사용하기 위해 setup 위쪽에서 파일을 읽어와 변수에 넣어주었습니다.
    • 이때 long_description_content_type 을 꼭 작성해 주어야 잘 적용이 됩니다.
  • py_modules 같은 경우는 사용하는 python 모듈을 적어줍니다.
  • install_requires는 정의한 라이브러리를 사용하기 위해 필요한 라이브러리를 적어줍니다.
  • include_package_data, package_data 파이썬 파일이 아닌 data 파일을 패키지에 포함시키기 위해 적어주어야 하는 부분입니다.

Deploy

pip install wheel && pip install twine 로 필요한 패키지를 설치해줍니다.

  • python setup.py bdist_wheel 로 배포 가능한 형태로 만듭니다.
    • 여기서 소스 코드를 통째로 배포하는 sdist와 프로젝트를 빌드한 결과물만을 배포하는 bdist가 있습니다. wheel은 배포 포멧이라고 보시면 됩니다.
  • 생성된 파일을 배포합니다. twine upload dist/something-0.0.0.0-py3-none-any.whl
    • 여기서 dist아래 파일이름은 각자 만든것에 따라 상이하기 때문에 변경해주시면 됩니다.
    • 커맨드를 입력하게 되면 username과 password를 입력하여 최종 배포를 마칠 수 있습니다.

Outro

  • 이제 최종 배포된 것을 pip 으로 설치하여 import하여 사용할 수 있습니다!
  • 협업에 있어 굉장히 편리한 형태이지 않을까 라는 생각이 들었습니다. (상황에 따라 아닐 수 도 있습니다ㅋㅋ!)
profile
공부해서 남주자

0개의 댓글