[파이썬] 패키지 재사용을 위한 패키징과 배포

너무나 사심이 가득하고 개인적인 대항해시대 온라인 시세 공유 프로젝트를 진행하면서 파이썬에 대해서도 많이 공부하게 되는 것 같습니다. 단순 언어도 공부가 되었지만, 실제 deploy 하는 측면에서도 고민을 하고 해결 방법을 찾아보곤 합니다.

대항해시대 시세 공유 도우미 프로그램는 크게 2개의 프로젝트로 구성되어 있습니다.
그리고 이 두개의 프로젝트는 물리적으로 분리된 프로젝트로 만들려고 합니다.

  - Machine Learning 을 수행하는 부분
  - GUI 클라이언트 부분
 
이 두개의 프로젝트는 공통으로 사용하는 utils 패키지가 있는데, 이 코드를 두 프로젝트에서 소스로 가지고 있으면 관리의 어려움이 있기에 utils 패키지를 패키징해서 pip install 을 이용해 사용하는 방법을 알아보았습니다.

구글에서 검색한 내용을 참고로 저는 아래와 같이 프로젝트 디렉토리를 구성하였습니다

---------------------------------------------
uwo_ps_utils/
    LICENSE
    MANIFEST.in
    README.md
    setup.py
    .gitignore
    docs/
    uwo_ps_utils/
        __init__.py
        market_rates_cropper.py

---------------------------------------------
       
(docs 디렉토리에는 어떤 포맷으로 작성해야 하는 지 몰라서, 제가 마음대로 작성한 텍스트 파일이 하나 들어있습니다)
MANIFEST.in 이나 setup.py 작성 방법에 대해서는 제일 아래에 있는 사이트를 참고하세요. .gitignore 나 LICENSE 부분은 github 에서 기본으로 제공하는 파일을 이용했습니다.

이 프로젝트를 빌드하기 위해서는 setuptools와 wheel이 필요하기 때문에,

pip install setuptools wheel

명령으로 필요한 패키지를 설치해 줍니다.
(사실 wheel 이 필요한지는 잘 모르겠습니다.  실제 이놈이 뭘 하는 것인지 찾아보진 않았고, 이걸 지우고 테스트를 해 보진 않았습니다)

그리고 아래와 같이 빌드를 합니다.

python setup.py sdist

그러면 dist/ 디렉토리 아래에 .tar.gz 로 패키징 됩니다.
그리고 이 패키지는 단순하게 아래와 같이 설치하면 됩니다.

pip install dist/{package_name}.tar.gz

이것으로 다른 프로젝트에서도 소스코드가 없이도 공통으로 사용할 패키지를 import 할 수 있게 되었습니다.


하지만!!!
이것만으로는 뭔가 부족하지요. 그래서 이 코드를 github에 올리고, 여기로부터 바로 설치할 수 있도록 해보겠습니다.
(PyPI 같은 공개 저장소도 있습니다만, 너무 개인적인 프로젝트이기에...)

그래서 일단 제 프로젝트를 github 에 올렸습니다.

https://github.com/ommokazza/uwo_ps_utils/

그리고 v0.1 이란 태그도 달아 두었습니다. 그리고 다음과 같이 설치해 주면 끝. 너무 쉽네요. 하지만 테스트를 위해서 master 브랜치를 이용하고, setup.py 버전을 업데이트 해 주도록 하였습니다.

pip install --upgrade git+https://github.com/ommokazza/uwo_ps_utils.git@master#egg=uwo_ps_utils


개인적으로 파이썬 공부하면서 느낀게, 뭔가 구현하는 게 너무 쉽다는 느낌?
그래서 파이썬 점점 좋아질 것 같습니다. 앞으로 뭔가 스크립트를 짜도 bash 보다는 python 을 이용할지도...
       

참고사이트:
https://django-document-korean.readthedocs.io/ko/master/intro/reusable-apps.html
https://packaging.python.org/tutorials/packaging-projects/#uploading-your-project-to-pypi

댓글

이 블로그의 인기 게시물

[게임개발 스토리] 장르/타입/조합 정보와 몇 가지 팁

[윈도우] 실행 중인 프로그램의 타이틀을 변경하는 유틸리티

Synergy 한글키 패치 공식 버전 적용 및 최종 정리