2006/10/16 10:52
Dev 노트
Python으로 프로그래밍 할 때, 직접 만든 모듈을 사용하는 법과 배포하는 법, 그리고 모듈 패키지를 만들어 사용하는 법을 간단히 알아본다.
Python User-defined ModulePython의 모든 소스파일은 기본적으로 모듈로써 임포트가 가능하다.
다만, 그 파일의 스코프에서 글로벌 변수와 구문들은 임포트 할 때 할당 또는 수행 되는 점을 주의하여야 한다.
그리고 임포트 할 모듈 파일은 반드시 .py 확장명을 가져야 한다.
# 이 모듈을 import하면 print구분이 실행된다.
var_a = 1
var_b = var_a + 1
def myfunc(param1):
print 'var_b:', var_b print 'var_a:', var_a
var_a = 1
var_b = var_a + 1
def myfunc(param1):
print 'var_b:', var_b print 'var_a:', var_a
기능적으로 유사한 모듈을 모아 패키지로 만들려면, 패키지로 모을 파이썬 모듈 파일을 하나의 디렉토리에 넣고, 디렉토리 안에 __init__.py 파일(underscore character가 init앞뒤에 두개씩)을 만들면된다.
__init__.py 파일을 작성하는 방법은 Python reference manual을 참고한다.
mypack라는 패키지 디렉토리를 만들고, init.py를 작성하였다고 가정하고, mypack/mod01, mypack/mod02가 있다고 하자. 아래와 같은 방법으로 임포트 할 수 있다.
import mypack
import mypack.mod01
from mypack.mod02 import *
import mypack.mod01
from mypack.mod02 import *
새로 만든 모듈과 패키지 배포하기배포에 대해 이해하려면 우선 Python의 import 디렉토리 참조 과정을 알아야 한다.
- C/C++의 INCLUDE_PATH와 비슷한 개념으로 Python은 몇가지 환경 변수 값을 참조한다.
- ./와 Python 모듈 설치 디렉토리가 우선된다.
- 다음으로 Python모듈 설치 디렉토리 아래에 있는 site-packages 디렉토리가 우선된다.
- PYTHONPATH 환경변수가 정의 되어 있다면 사용한다.
- PYTHONPATH 환경변수가 정의 되어 있지 않다면 PATH를 PYTHONPATH에 복사하여 사용한다.
따라서 크게 두가지 방법으로 내가 만든 모듈을 사용하거나 배포할 수 있다.
- 무조건 현재 디렉토리에 내가 만든 모듈(또는 패키지)을 두고 사용한다.
- 파이썬 모듈 설치 디렉토리(보통은 /usr/local/lib/python2.4)에 복사해 둔다. 단, root권한이 필요하다.
- 파이썬 모듈 설치 디렉토리 아래에 있는 site-packages/ 디렉토리에 복사 또는 심볼릭 링크한다. 단, 시스템에 따라 root가 필요하기도 하다.
- PYTHONPATH내에 위치시킨다.
- PYTHONPATH 내에 위치시키기 위하여 나에게 퍼미션이 주어지는 디렉토리에 모듈을 위치하고 PATH에 추가한다.
인터넷 등을 통해 오픈소스 라이브러리를 다운로드 받거나 다른 3rd-party 모듈을 설치하게 되면 보통 site-packages에 설치하도록 설치 스크립트가 만들어져 있다.(3번 방법)
정의한 모듈파일의 수가 적을 때나 아직 모듈을 개발중일 때는 1번의 방법도 많이 사용된다.


