R 팩키지도 그렇지만, 파이썬 팩키지를 제작하는 이유는 재사용성(reuse)을 높이는 것이다. 그렇게 함으로써 복사하여 붙여넣기를 최소화할 수 있고 다른 사람들이 사용할 수 있도록 전달하는 기능도 부여할 수 있다.
팩키지를 이해하기 위해서 팩키지와 혼용되어 사용되고 있는 다른 용어들에 대해 살펴보자.
스크립트(script): python my_written_script.py
와 같이 실행될 수 있는 파이썬 코드
팩키지(package): import
명령어로 가져오기 할 수 있는 파이썬 코드로 작성된 디렉토리
pandas
, numpy
, sklearn
등하위 팩키지(subpackage): 팩키지 내부의 더 작은 팩키지
pandas.DataFrame
, numpy.random
, sklearn.datasets
, sklearn.model_selection
모듈(module): 팩키지 내부 파이썬 코드로 다수 함수가 모인 .py
파일.
라이브러리(Library): 팩키지 혹은 팩키지를 모아 놓은 팩키지 집합
math
, os
등)비만 기준 ’골드 스탠더드(gold standard)’로 체질량지수(BMI, Body Mass Index)를 많이 사용한다. 체중을 신장의 제곱으로 나눈값으로 BMI를 계산한다.
\[\text{체질량 지수} = \frac{체중}{신장^2}\] 상기 내용을 파이썬 스크립트로 작성하면 다음과 같다.
# BMI 계산
= 170.5 * 0.01
height = 70.9
weight = weight / height ** 2
bmi print("BMI:", bmi)
BMI: 24.389195139360684
스크립트를 일반화시켜 이를 함수로 제작한다. 즉 변화하는 부분을 매개변수(parameter)로 처리하여 BMI를 계산하도록 코드를 제작한다.
# BMI 계산
def calc_bmi(height = 170.5, weight=70.9):
= height * 0.01
height = weight
weight = weight / height ** 2
bmi print("BMI:", bmi)
= 170.5, weight=70.9) calc_bmi(height
BMI: 24.389195139360684
사실 팩키지는 함수와 도움말 문서 덩어리로 이루어졌다. 우선 함수 문서 작성은 뒤로 일단 미루고 작성한 팩키지를 불러와서 활용하는 방식을 살펴보자.
먼저, 지금까지 작업한 결과는 다음과 같다. kbmi_dir
디렉토리 아래 팩키지를 알리는 __init__.py
를 그냥 두고 __init__.py
파일 내부에는 어떤 코드도 있지 않음. calc_bmi()
함수는 bmi_module.py
파일에 작성되어 있다. bmi_script.py
는 파이썬 팩키지와 아무 관련없으니 나중에 삭제하거나 다른 곳으로 옮겨 별도 관리할 예정이다.
tree kbmi_dir
[01;34mkbmi_dir[00m
├── __init__.py
├── bmi_module.py
└── bmi_script.py
0 directories, 3 files
팩키지가 된다는 것은 동일한 팩키지명을 갖는 디렉토리 구조를 만드는 것에서 시작된다. 그리고 setup.py
를 넣게 되면 해당 팩키지에 포함된 함수를 끌어다 사용할 수 있게 된다.
tree kbmi
[01;34mkbmi[00m
├── [01;34mkbmi[00m
│ ├── __init__.py
│ ├── [01;34m__pycache__[00m
│ │ └── __init__.cpython-36.pyc
│ └── bmi_module.py
├── [01;34mkbmi.egg-info[00m
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ └── top_level.txt
└── setup.py
3 directories, 8 files
setup.py
파일을 다음과 같이 작성해서 코드가 담긴 kbmi
디렉토리 외부에 위치시킨다.
/ <-- 팩키지 외부 디렉토리
kbmi|-- kbmi <--- 팩키지 내부 코드를 담고 있는 핵심 디렉토리
| |-- __init__.py
| |--
|-- setup.py <-- 팩키지임을 알리는 setup.py 스크립트
# 꼭 필요한 함수
from setuptools import setup
# setup 함수 호출
setup(="Kwangchun Lee",
author="A very simple package to calulate BMI", name="kbmi",
description="0.1.0",
version )
pip install -e .
명령어를 통해서 제작한 팩키지를 설치한다. 그전에 먼저 콘솔에서 다음 디렉토리 위치로 이동한다.
/ <-- 콘솔에서 디렉토리 위치로 이동한다.
kbmi|-- kbmi
| |-- __init__.py
| |--
|-- setup.py
팩키지를 설치하게 되면 이제 로컬 컴퓨터에서 자체 개발한 팩키지를 불러 사용할 수 있게 된다.
(base) adminui-MacBookPro:kbmi kwangchunlee$ pip install -e .
Obtaining file:///Users/kwangchunlee/swc/sw4ds/kbmi
Installing collected packages: kbmi
Running setup.py develop for kbmi
Successfully installed kbmi
numpy
, pandas
, sklearn
처럼 자체 제작한 kbmi
팩키지를 import
해서 사용해보자.
import kbmi
= calc_bmi(170,70) bmi_value
BMI: 24.221453287197235
print(bmi_value)
None
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com