수학과의 좌충우돌 프로그래밍

[Django] 15. app 재사용하기 본문

웹프로그래밍/Django

[Django] 15. app 재사용하기

ssung.k 2019. 3. 2. 15:55

안녕하세요 강민성입니다.



이번 시간에는 app 재사용에 대해서 알아보도록 하겠습니다.


우리가 app 을 기능별로 세분화 하는 이유가 바로 재사용 때문이었습니다.


이 방법을 알아보도록 하겠습니다.




app 재사용 하는 법




재사용의 원리


app 을 재사용하기 위해서는 재사용할 app 을 먼저 패키징 해줘야합니다.


패키징이라고 함은 app 을 다른 프로젝트에서 가져가서 사용할 수 있도록 포장하는 일이라고 할 수 있습니다.


그리고 이미 포장을 푸는 방법은 해본 적이 있으실 겁니다.


pip install {패키지 이름


다음과 같은 방식으로 패키지를 풀어줄 수 있습니다.




패키징 하는 법


그럼 패키징하는 방법에 대해서 알아보겠습니다.


패키징을 하기 위해서는 4개의 파일이 필요합니다.


4개의 파일의 이름과 각각의 역할을 다음과 같습니다.


1. README.rst : 패키지의 소개 / 사용설명서 / 기능 명세서


2. LICENSE : 라이센스


3. setup.py : 설치의 방법 과정


4. MANIFEST.in : 파이썬 파일이 아닌 파일들 명시


4개의 파일의 이름과 각각의 역할을 다음과 같습니다.



저번 포스팅에서 다루었던 thumbnailapp 을 패키징 해보도록 하겠습니다.


저번 시간 포스팅으로 이동하려면 여기를 클릭하세요.



먼저 프로젝트 폴더와 형제관계에 있는 빈 디렉토리 proj 을 만들어주겠습니다.


그리고 재사용할 app 인 thumbnailapp 을 proj 폴더로 이동시켜 줍니다.


       



이제 proj 폴더 안에 위에서 언급 했던 4개의 파일을 모두 만들어주고 이를 패키징 할 것입니다.


README.rst 부터 만들어보겠습니다.


사용하는 app 의 이름에 따라 thumbnailapp 을 바꿔주면 되겠습니다.


추가적으로 이 부분에 한글을 사용하는 것은 되도록 지양합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
=====
thumbnailapp
=====
 
 
thumbnailapp is a simple Django app to conduct Web-based thumbnailapp. For each
question, visitors can choose between a fixed number of answers.
 
Detailed documentation is in the "docs" directory.
 
Quick start
-----------
 
1. Add "thumbnailapp" to your INSTALLED_APPS setting like this::
 
    INSTALLED_APPS = [
        ...
        'thumbnailapp',
    ]
 
2. Include the thumbnailapp URLconf in your project urls.py like this::
 
    path('thumbnailapp/', include('thumbnailapp.urls')),
 
3. Run `python manage.py migrate` to create the thumbnailapp models.
 
4. Start the development server and visit http://127.0.0.1:8000/admin/
   to create a thumbnailapp (you'll need the Admin app enabled).
5. Visit http://127.0.0.1:8000/thumbnailapp/ to participate in the thumbnailapp.
cs



다음으로는 LICENSE 입니다.


django document 에서도 이렇게 설명을 하고 있습니다.


마찬가지로 파일만 만들고 건너 뛰도록 하겠습니다.


django-polls/LICENSE 파일을 생성합니다. 라이선스 선택은 이 튜토리얼의 범위를 벗어나므로, 라이선스 없이 공개된 코드는 쓸모없음 을 의미한다는 것만 말해두겠습니다. Django와 많은 Django 호환 앱들이 BSD 라이센스로 배포되고 있습니다; 그러나 자신의 라이센스를 자유롭게 선택할 수 있습니다. 라이선스 선택이 누군가 여러분의 코드를 사용하는데 영향이 미칠수 있다는 사실은 알고 있어야합니다.



다음으로 설치방법이 담긴 setup.py 입니다.


사용하실 때 setup 의 name과 description 부분을 수정 후 사용하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
    from setuptools import find_packages, setup
    with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
        README = readme.read()
    # allow setup.py to be run from any path
    os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
    setup(
        name='thumbnailapp',
        version='0.1',
        packages=find_packages(),
        include_package_data=True,
        license='BSD License',  # example license
        description='method of using thumbnail ',
        long_description=README,
        url='https://www.example.com/',
        author='Your Name',
        author_email='yourname@example.com',
        classifiers=[
            'Environment :: Web Environment',
            'Framework :: Django',
            'Framework :: Django :: X.Y',  # replace "X.Y" as appropriate
            'Intended Audience :: Developers',
            'License :: OSI Approved :: BSD License',  # example license
            'Operating System :: OS Independent',
            'Programming Language :: Python',
            'Programming Language :: Python :: 3.5',
            'Programming Language :: Python :: 3.6',
            'Topic :: Internet :: WWW/HTTP',
            'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        ],
    )
cs


마지막으로 파이썬 파일이 아닌 파일을 명시해주는 MANIFEST.in 입니다.


include 를 이용하여 파일을,


recursive-include 를 이용하여 디렉토리안의 전체 파일을 지정해줄 수 있습니다.


1
2
3
4
include LICENSE
include README.rst
recursive-include thumbnailapp/static *
recursive-include thumbnailapp/templates *
recursive-include thumbnailapp/migrations *
cs





이제 마지막으로 현재까지의 proj 폴더를 묶어주면 됩니다.


그러기 위해서는 proj 디렉토리로 이동해서 다음과 같은 명령어를 입력합니다.


그 결과,



dist라는 디렉토리와 그 안의 새로운 파일이 생겼는데 


이 파일이 thumbnailapp 의 내용을 담고 있는 파일입니다.


pip install thumbnailapp-0.1.tar.gz


저 파일의 이름으로 install 해줌으로서 app 을 사용할 수 있습니다.



현재 상태에서 thumbnail project 의 서버를 켜면 error가 날 것입니다.


아무 app도 없기 때문이죠.


이제 thumbnailapp 을 install 해준 후 서버를 켜보도록 하겠습니다.



먼저 proj 디렉토리안에서 


pip install dist/thumbnailapp-0.1.tar.gz


명령어를 입력하면 설치가 완료될 것입니다.


그 후 다시 서버를 돌려보면 문제없이 서버가 켜지는걸 확인 할 수 있습니다.

Comments