반응형

/************************************************************************************************

-- Title : [PY2.7.11] 패키지 사용 및 init 파일

-- Reference : itsdong.com

-- Key word : 패키지 package pythonpath init 파일 __init__ 절대경로 상대경로

************************************************************************************************/


# -*- coding: utf-8 -*-


# ---------------------------------------

# -- 패키지 사용 테스트

# ---------------------------------------


# -- 디렉토리 설정

#    C:\Python\AAA\BBB\CCC

#    각 폴더마다 __init__.py 빈 파일 생성


# -- BBB 폴더에

>>> def test_bbb()

>>>     print('bbb')


# -- CCC 폴더에    

>>> def test_ccc()

>>>     print('ccc')



# -- Python Path 설정

C:\> set PYTHONPATH=c:\python

C:\> python


>>> import AAA.BBB.bbb

>>> AAA.BBB.bbb.test_bbb()

bbb

>>> 

>>> from AAA.BBB import bbb

>>> bbb.test_bbb()

bbb

>>> 

>>> from AAA.BBB.bbb import test_bbb

>>> test_bbb()

bbb

>>> 


# -- __init__.py

#    3.3 이전에는 init 파일이 없으면 패키지 인식 안됨.

#    3.3부터는 init 파일이 없어도 인식됨.

#    하위 버전과 호환을 위해 init 파일 생성 권고.


>>> from AAA.BBB import *

>>> bbb.test_bbb()

bbb

>>> 


# -- from 패키지.패키지(폴더) import * : 모듈 의미

#    from 패키지.패키지.모듈  import * : 함수 의미


# -- 특정 디렉토리의 모듈을 *을 이용해서 import시 

#    __init__.py에 __all__ = ['bbb']를 입력하면

#    bbb만 호출됨.


>>> from AAA.BBB.bbb import *

>>> test_bbb()

bbb

>>> 


# -- CCC폴더에서 test_bbb() 호출시 

#    ccc.test_ccc 수정

>>> from AAA.BBB.bbb import test_bbb

>>> def test_ccc()

>>>     test_bbb()

>>>     print('ccc')


>>> import AAA.BBB.CCC.ccc import test_ccc

>>> bbb

>>> ccc

 

# -- 상대 경로를 이용해서 test_bbb() 호출시

#    ccc.test_ccc 수정

>>> from ..bbb import test_bbb

>>> def test_ccc()

>>>     test_bbb()

>>>     print('ccc')


>>> import AAA.BBB.CCC.ccc import test_ccc

>>> bbb

>>> ccc

반응형

+ Recent posts