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하여 사용할 수 있습니다!
- 협업에 있어 굉장히 편리한 형태이지 않을까 라는 생각이 들었습니다. (상황에 따라 아닐 수 도 있습니다ㅋㅋ!)