작성자: admin 작성일시: 2016-09-20 00:19:04 조회수: 270 다운로드: 28
카테고리: Python 태그목록:

파이썬 패키지 사용하기

패키지 임포트

패키지가 설치되어 있다고 바로 파이썬에서 사용할 수 있는 것은 아니다. 패키지를 사용하려면 해당 패키지를 파이썬에서 사용할 수 있도록 설정하는 명령을 실행해야 한다.

파이썬에서 패키지를 사용하도록 설정하는 것을 패키지 임포트(import)라고 한다. 패키지를 임포트하려면 다음 명령을 실행한다.

import 패키지이름

또는

import 패키지이름 as 패키지별명

이 때 주의할 점은 임포트할 때 사용하는 패키지 이름은 일반적으로 부르는 패키지 이름과 다를 수 있다. 예를 들어 Scikit-Learn 패키지는 sklearn이라는 이름으로 임포트해야 한다.

패키지 이름은 추후 패키지 안의 함수들을 사용할 때 계속 쓰인다. 그래서 패키지 이름이 너무 길면 import ~ as ~ 명령을 사용하여 짧은 패키지 별명을 사용할 수도 있다.

예를 들어 Scikit-Learn 은 보통 sk라는 별명으로 임포트한다.

In [33]:
import sklearn as sk

패키지 내용 살펴보기

임포트된 패키지 안의 내용을 살펴보려면 다음 명령을 사용한다.

dir(패키지이름 또는 패키지별명)

예를 들어 Scikit-Learn 패키지를 sk라는 별명으로 임포트한 경우에는 다음과 같이 패키지 안에 포함된 함수 등을 출력할 수 있다.

In [34]:
dir(sk)
Out[34]:
['__SKLEARN_SETUP__',
 '__all__',
 '__builtins__',
 '__check_build',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '__path__',
 '__version__',
 'base',
 'clone',
 'externals',
 'preprocessing',
 're',
 'setup_module',
 'sys',
 'utils',
 'warnings']

대부분의 패키지는 그 안에 하위 패키지를 가지고 있다. 이러한 하위 패키지 중에는 상위 패키지를 임포트할 때 자동으로 임포트되는 것도 있지만 자동으로 임포트되지 않는 것도 있다. 자동으로 임포트되지 않는 하위 패키지는 다음과 같이 수동으로 임포트 해야 한다.

In [35]:
import sklearn.preprocessing
In [36]:
dir(sklearn.preprocessing)
Out[36]:
['Binarizer',
 'FunctionTransformer',
 'Imputer',
 'KernelCenterer',
 'LabelBinarizer',
 'LabelEncoder',
 'MaxAbsScaler',
 'MinMaxScaler',
 'MultiLabelBinarizer',
 'Normalizer',
 'OneHotEncoder',
 'PolynomialFeatures',
 'RobustScaler',
 'StandardScaler',
 '__all__',
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '__path__',
 '_function_transformer',
 'add_dummy_feature',
 'binarize',
 'data',
 'imputation',
 'label',
 'label_binarize',
 'maxabs_scale',
 'minmax_scale',
 'normalize',
 'robust_scale',
 'scale']

패키지에 포함된 함수 등을 사용하기

패키지에 포함된 함수 등을 사용할 때는 앞에 패키지 이름(import ~ as ~ 명령을 사용하였을 때는 패키지 별명)과 마침표(.)을 붙인 후 사용해야 한다. IPython이나 Jupyter 등을 사용할 때는 마침표까지만 입력하고 탭(TAB)키를 누르면 자동 완성 기능을 지원하기도 한다.

In [37]:
import numpy as np
np.arange(10)
Out[37]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

선택적 임포트

패키지를 임포트할 때 다음과 같이 특정한 명령어들만 선택적으로 임포트하는 것도 가능하다.

from 패키지이름 import 명령어

또는

from 패키지이름 import 명령어1, 명령어2, 명령어3

선택적 임포트를 하였을 경우에는 패키지 이름과 마침표 없이 바로 명령어를 사용할 수 있다.

In [38]:
from numpy import arange
arange(10)
Out[38]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

패키지 안의 모든 명령을 선택적 임포트할 때는 명령어 이름 대신 * 기호를 사용하는데 이를 와일드 임포트(wild import)라고 한다. 와일드 임포트를 하는 경우에는 뜻하지 않게 기존의 변수나 함수를 덮어 쓰는 경우가 있을 수 있기 때문에 특별한 경우가 아니면 사용하지 말아야 한다.

예를 들어 f라는 이름의 함수를 정의한 후에 SciPy 패키지를 와일드 임포트하면 F 분포를 나타내는 f 명령이 새롭게 임포트되면서 기존의 함수를 없애버릴 수 있다.

In [39]:
def f(): 
    print("I am f function!")
In [40]:
f()
I am f function!
In [41]:
from scipy.stats import *
In [42]:
f()

TypeErrorTraceback (most recent call last)
<ipython-input-42-0ec059b9bfe1> in <module>()
----> 1 f()

/home/dockeruser/anaconda2/lib/python2.7/site-packages/scipy/stats/_distn_infrastructure.pyc in __call__(self, *args, **kwds)
    766 
    767     def __call__(self, *args, **kwds):
--> 768         return self.freeze(*args, **kwds)
    769     __call__.__doc__ = freeze.__doc__
    770 

/home/dockeruser/anaconda2/lib/python2.7/site-packages/scipy/stats/_distn_infrastructure.pyc in freeze(self, *args, **kwds)
    763 
    764         """
--> 765         return rv_frozen(self, *args, **kwds)
    766 
    767     def __call__(self, *args, **kwds):

/home/dockeruser/anaconda2/lib/python2.7/site-packages/scipy/stats/_distn_infrastructure.pyc in __init__(self, dist, *args, **kwds)
    431 
    432         # a, b may be set in _argcheck, depending on *args, **kwds. Ouch.
--> 433         shapes, _, _ = self.dist._parse_args(*args, **kwds)
    434         self.dist._argcheck(*shapes)
    435         self.a, self.b = self.dist.a, self.dist.b

TypeError: _parse_args() takes at least 3 arguments (1 given)

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!