블로그 이미지
루미넌스
There are only 10 types of people, those who understand binary and those who do not.

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
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

기능적으로 유사한 모듈을 모아 패키지로 만들려면, 패키지로 모을 파이썬 모듈 파일을 하나의 디렉토리에 넣고, 디렉토리 안에 __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 *

새로 만든 모듈과 패키지 배포하기배포에 대해 이해하려면 우선 Python의 import 디렉토리 참조 과정을 알아야 한다.
  1. C/C++의 INCLUDE_PATH와 비슷한 개념으로 Python은 몇가지 환경 변수 값을 참조한다.
  2. ./와 Python 모듈 설치 디렉토리가 우선된다.
  3. 다음으로 Python모듈 설치 디렉토리 아래에 있는 site-packages 디렉토리가 우선된다.
  4. PYTHONPATH 환경변수가 정의 되어 있다면 사용한다.
  5. PYTHONPATH 환경변수가 정의 되어 있지 않다면 PATH를 PYTHONPATH에 복사하여 사용한다.

따라서 크게 두가지 방법으로 내가 만든 모듈을 사용하거나 배포할 수 있다.

  1. 무조건 현재 디렉토리에 내가 만든 모듈(또는 패키지)을 두고 사용한다.
  2. 파이썬 모듈 설치 디렉토리(보통은 /usr/local/lib/python2.4)에 복사해 둔다. 단, root권한이 필요하다.
  3. 파이썬 모듈 설치 디렉토리 아래에 있는 site-packages/ 디렉토리에 복사 또는 심볼릭 링크한다. 단, 시스템에 따라 root가 필요하기도 하다.
  4. PYTHONPATH내에 위치시킨다.
  5. PYTHONPATH 내에 위치시키기 위하여 나에게 퍼미션이 주어지는 디렉토리에 모듈을 위치하고 PATH에 추가한다.

인터넷 등을 통해 오픈소스 라이브러리를 다운로드 받거나 다른 3rd-party 모듈을 설치하게 되면 보통 site-packages에 설치하도록 설치 스크립트가 만들어져 있다.(3번 방법)
정의한 모듈파일의 수가 적을 때나 아직 모듈을 개발중일 때는 1번의 방법도 많이 사용된다.

Creative Commons License
posted by 루미넌스
TAG ,