여러 프로젝트를 만들고 다루며 다양한 앱을 생성해봤다. 잘 살펴보면 지금까지 만든 앱은 결국 한 가지의 기능만을 담당하고 있는 걸 알 수 있다. login 앱은 로그인 기능만 담당하고, portfolio 앱은 우리의 포트폴리오를 출력하는 기능만 담당했다.
그럼 만약 10개의 회원가입 사이트를 만들어야 하는 상황이라고 생각해보자. 10개의 프로젝트를 진행할 동안 10개의 signup과 10개의 login을 구현해야 한다. 그 앱들을 귀찮게 한 땀 한 땀 만들어줘야 할까..? 를 생각해보면, 앱의 재사용이 얼마나 편리한 기능일지 짐작해볼 수 있다.
패키징
만든 앱을 다른 프로젝트에서 재사용하기 위해서는 패키징을 해야한다. 쉽게 설명하면 짐을 쌌다가 원하는 곳에 가서 짐을 푸는것. 앱을 하나의 파일로 묶었다가 원하는 프로젝트에 풀어주는 행위를 말한다.
앱을 패키징하기 위해서는 필수로 생성해야하는 4개의 파일들이 있다.
•
README.rst
git의 README와 비슷하다. 패키지의 소개, 사용설명서, 기능명세서 등 정보들이 포함된다.
•
LICENSE
자격정보를 의미한다.
•
setup.py
패키지의 설치 방법과 그 과정이 담긴 파이썬 파일.
•
MANIFEST.in
파이썬 파일들을 제외한 파일들을 담아주는 파일.
패키징 준비하기
프로젝트 생성
앱 옮기기
내부의 앱을 외부에서 사용할 것이기 때문에, 앱을 외부로 빼줘야한다. 프로젝트와 같은 깊이의 경로에 proj 폴더를 만든다. 다음 login 앱을 그대로 드래그 해 proj 폴더에 넣는다.
이제 필요한 파일들을 생성해보자.
README.rst 파일 생성
장고 공식 문서 링크의 README 부분을 복사해준다.
Polls를 모두 login으로 고쳐준다.
LICENSE 파일 생성
다음 링크의 개발템플릿 탭을 클릭하면 확인할 수 있다.
setup.py 파일 생성
링크의 setup.py 부분을 복사해준다.
name과 description을 수정해준다.
MANIFEST.in 파일 생성
앱은 패키징 될 때 보통 파이썬 파일만 묶이게 된다. 따라서 README, LICENSE 등의 파일이 함께 패키징 되도록 MANIFEST 파일을 작성해줘야한다.
include README.rst 와 incldue LICENSE 로 방금 만든 파일(.py 제외)을 include 해준다. 그리고 login/templates 안에 담긴 모든 파일들을 include 하기 위해 recursive-inclue 구문으로 다중 import를 진행한다.
이제 필요한 파일들을 모두 생성했다.
앱 패키징 하기
proj 디렉토리로 이동하여 터미널에 다음 명령을 작성한다.
python setup.py sdist
Bash
복사
해당 명령어를 입력해주면 setup.py 파일이 있는 경로의 파일들이 login-0.1.tar.gz의 패키지 파일 하나로 묶이게 된다.
만든 패키지 설치 하기
proj 폴더로 이동해서 pip install 을 이용해 앱을 설치해주자.
pip install dist/login-0.1.tar.gz
Bash
복사
이후 서버를 돌려보면, (social_login으로 돌아가서)
잘 돌아가는걸 확인할 수 있다.