파이썬에서 사용자 폴더를 검색 경로에 추가시키기 위해서는 다음과 같이 sys 모듈의 path 리스트에 이 경로를 추가해 주면 된다.
---------------------------------------------------------------------------
>>> import sys
>>> sys.path.append('d:/mydir') # 윈도는 'd:\\mydir'
---------------------------------------------------------------------------
그러면 만약 다음과 같이 모듈을 import 할 때
---------------------------------------------------------------------------
>>> import mymod
---------------------------------------------------------------------------
사용자 폴더 안에서도 mymod.py 파일이 있는지 검색해 보게 된다.
그런데 검색 경로 안에 어떤 폴더가 있고 그 폴더 안에 __init__.py 파일이 있다면 이것은 그 폴더가 파이썬 모듈이라는 것을 표시하는 역할을 한다. 예를 들어 다음과 같이 spam폴더 안에 파일이 두 개가 있다고 가정하자.
d:/ mydir / spam /__init__.py # 이 파일이 spam 폴더를 파이썬모듈로 만든다.
d:/ mydir /spam / module.py
그리고 d:/mydir 이 경로로 잡혀있다고 가정한다. 그렇다면 spam 폴더는 파이썬 모듈로 간주되고 module.py는 하위모듈로 취급된다. 그래서 module.py 모듈파일을 다음과 같이 불러올 수 있다.
---------------------------------------------------------------------------
>>> import spam.module
---------------------------------------------------------------------------
d:/ mydir / spam /__init__.py # 이 파일이 spam 폴더를 파이썬모듈로 만든다.
d:/ mydir /spam / module.py
그리고 d:/mydir 이 경로로 잡혀있다고 가정한다. 그렇다면 spam 폴더는 파이썬 모듈로 간주되고 module.py는 하위모듈로 취급된다. 그래서 module.py 모듈파일을 다음과 같이 불러올 수 있다.
---------------------------------------------------------------------------
>>> import spam.module
---------------------------------------------------------------------------
또는
---------------------------------------------------------------------------
>>> from spam import module
---------------------------------------------------------------------------
즉, spam폴더 안에 __init__.py 파일이 있다면 spam 폴더는 모듈로 간주되고 module.py 는 서브모듈이 된다. 만약 __init__.py 파일을 지운다면 파이썬은 spam 폴더를 모듈로 취급하지 않으므로 module.py 도 더이상 서브모듈로 간주되지 않는다. 따라서 위의 명령어는 오류를 발생시킬 것이다.
이 __init__.py 은 그냥 빈 파일일 수도 있지만, 객체를 정의하거나 서브패키지의 특정 부분만을 선택하여 내보내거나 하는 코드를 가질 수도 있다. 만약 __init__.py 안의 내용을 접근하려면 다음과 같이 하면 된다.
---------------------------------------------------------------------------
>>> import spam
---------------------------------------------------------------------------
---------------------------------------------------------------------------
즉, spam폴더 안에 __init__.py 파일이 있다면 spam 폴더는 모듈로 간주되고 module.py 는 서브모듈이 된다. 만약 __init__.py 파일을 지운다면 파이썬은 spam 폴더를 모듈로 취급하지 않으므로 module.py 도 더이상 서브모듈로 간주되지 않는다. 따라서 위의 명령어는 오류를 발생시킬 것이다.
이 __init__.py 은 그냥 빈 파일일 수도 있지만, 객체를 정의하거나 서브패키지의 특정 부분만을 선택하여 내보내거나 하는 코드를 가질 수도 있다. 만약 __init__.py 안의 내용을 접근하려면 다음과 같이 하면 된다.
---------------------------------------------------------------------------
>>> import spam
---------------------------------------------------------------------------
이렇게 하면 __init__.py 안에 정의된 객체들이 spam 모듈로 올라오게 된다. 주의할 점은 이렇게 spam 모듈을 임포트한다고 해서 module.py 가 자동으로 하위모듈로 임포트되는 것은 아니라는 것이다. spam이 임포트될 때 module 도 임포트되려면 __init__.py 안에 다음과 같이 명시해 주어야 한다.
---------------------------------------------------------------------------
---------------------------------------------------------------------------
# __init__.py 화일의 내용
from . import module
---------------------------------------------------------------------------
이렇게 하면 spam.module 로 접근할 수 있다.
from . import module
---------------------------------------------------------------------------
이렇게 하면 spam.module 로 접근할 수 있다.
'프로그래밍언어.Lib > 파이썬' 카테고리의 다른 글
파이썬의 pyserial 을 이용해서 아두이노와 통신하기 (2/3) (1) | 2015.04.27 |
---|---|
파이썬의 pyserial 을 이용해서 아두이노와 통신하기 (3/3) (0) | 2015.04.27 |
파이썬의 산술 연산자 (0) | 2015.04.24 |
파이썬 식별자 만드는 규칙 (0) | 2015.04.24 |
파이썬의 control system library (0) | 2015.04.24 |