[ 대화식 모드에서 혹은 다른 모듈에서 모듈 파일 실행하기 ]
파이썬 인터프리터 안에서 모듈 파일(파일로 만들어진 프로그램)을 수행하기 위한 방법은 다음 두가지가 있다.
우선 다음과 같은 modfile.py 모듈 파일이 만들어져 있다고 하자. (파이썬 모듈 파일 이름은 .py로 끝나야한다)
------------------------------------------------------------------------
#!/usr/bin/env python
#file: modfile.py
s = 'module file sample'
def add(a,b):
return a+b
print add(3,4)
------------------------------------------------------------------------------------
===== execfile 이용하기 =====
사용되는 빈도수는 작지만, 파이썬 인터프리터 안에서 파일을 수행한다면 'execfile'을 이용할 수 있다.
------------------------------------------------------------------------------------
>>> execfile('modfile.py')
7
>>> s
'module file sample'
>>> add(5,6)
11
>>>
------------------------------------------------------------------------------------
※ 만일 'execfile' 을 수행했을 때 다음과 같은 에러 메시지를 보게 된다면 저당된 모듈 파일의 위치를
차지 못했기 때문이다.
Traceback (innermost last):
FILE line 1, in?
execfile('modfile.py')
IOError : [Errno 2] No such file or directory
위와 같은 에러 발생시 세가지 해결 방법이 있다고 한다.
*************************************************************
1. 모듈 파일을 파이썬 인터프리터가 찾을 수 있는 디렉토리로 이동시키거나
2. 파이썬 인터프리터에게 모듈 파일이 저장된 디렉토리를 알려주는 것이다.
3. PYTHONPATH 환경변수를 변경한다. (전 장에서 했음)
*************************************************************
파이썬 인터프리터가 찾을 수 있는 디렉토리 목록을 알아보기 위해선 아래와 같이 한고 한다.
>>> import sys
>>> sys.path
['', '/usr/lib/python2.2', '/usr/lib/python2.2/plat-linux2', '/usr/lib/python2.2/lib-dynload',
'/usr/lib/python2.2/site-packages', '/usr/lib/python2.2/site-packages/gtk-2.0']
>>>
만약 첫번째 방법으로 해결 하려면 'modfile.py' 를 위에서 보인 목록 중 한 디렉토리로 이동하는 것이다.
(사실 이것은 임시적인 파일을 실행시키기에는 별로 좋은 방법이 아니다.) 이동하는 디렉토리가 시스템에서만
사용하는 장소가 되지 않도록 조심하라.
두 번째 방법은 다음과 같이 한다.
>>> import sys
>>> sys.path.append('디렉토리 경로명')
------------------------------------------------------------------------------------
===== import로 수행하기 =====
가장 많이 사용되는 방법이다. 'import'를 사용하며 그 모듈에 있는 모든 전역 이름들을 모듈 이름을
통하여 사용할 수 있다.
------------------------------------------------------------------------------------
>>> import modfile
7
>>> modfile.s
'module file sample'
>>> modfile.add(6,7)
13
>>>
------------------------------------------------------------------------------------
위의 두 방법은 대화식 인터프리터에서만 수행할 수 있는 것은 아니다. 두 가지 모두 파이썬 문으로
표현된 것이므로 다른 모듈 파일에서도 사용이 가능하다.