(파이썬) 모듈

코드를 여러개의 파일로 분리하는 것


*모듈이란?

파이썬에서는 필요에 따라서 로드 할 수 있도록 만들어진 파일을 모듈(module)이라고 부른다.



*모듈의 사용

새로운 파일을 만든다. 이름은 greeting.py

#greeting.py
def welcome():
  return 'Hello world'


#main.py
import greeting
print greeting.welcome()





-->import는 모듈을 로드할 때 사용하는 명령어다.



<네임스페이스>
 네임스페이스란 간단하게 디렉토리라고 보면된다.
하나의 애플리케이션에는 다양한 모듈을 사용하게 된다. 그런데 모듈이 서로 다른 개발자에 의해 만들어지기 때문에 같은 이름을 쓰는 경우가 생길 수 있다. 이런 경우먼저 로드된 모듈은 나중에 로드된 모듈에 의해서 덮어쓰기 되기 때문에 네임스페이스가 필요하다.

만약 환영인사를 얻어별로 다르게 하고 싶다면 어떻게해야할까? 3개의 파일을 만든다.

예)
#greeting_en.py

def welcome():
   return 'Hello world'


#greeting_ko.py
 
def welcome():
  return '안녕 세계'


#main.py

import greeting_en
import greeting_ko
print greeting_en.welcome();
print greeting_ko.welcome();


-->여기서 greeting_en, greeting_ko가 네임스페이스이다.



<from>

만약 welcome앞에 네임스페이스(greeting)를 명시하고 싶지 않다면 어떻게 해야 할까? 모듈을 로드하는 방식을 달리하면 된다.
from뒤에 모듈의 이름을 붙이고 import뒤에 함수의 이름을 붙이면 welcome함수는 greetng_ko모듈의 함수로 동작한다.

예) from greeting_ko import welcome
     print welcome();

import * 는 모든 함수를 사용한다.



<패키지>

모듈의 수가 많아지면 모듈을 사용하기 좋은 형태로 잘 조직화하는 어려움이 생긴다. 이런경우 도입 할 수 있는 기능이 패키지이다.패키지를 사용하면 모듈을 디레고토리 별로 분류할수 있다.



*import sys
->sys모듈은 파이썬에서 기본적으로 제공하는 모듈이다.

print sys.path

->>sys.path는 특정 모듈을 로드(import)할 때 경로를 검색해보는 리스트다.


사용자 모듈 디렉토리 추가

위에서 sys.path를 통해서 나열한 디렉토리는 파이썬이 기본적으로 사용하는 경로들이다. 여기에 자기만의 경로를 추가하고 싶다면 PYTHONPATH라는 환경변수를 추가하면 된다. 이것은 운영체제의 PATH나 자바의 CLASSPATH와 비슷한 역할을 한다. 아래와 같은 방법으로 사용자 디렉토리를 추가하면 실행파일과 같은 디렉토리의 모듈보다는 우선순위가 낮지만, 모듈 기본 디렉토리 보다는 우선순위가 높다.

리눅스 & OSX & UNIX

유닉스 계열의 운영체제에서는 아래와 같은 방법으로 환경변수 PYTHONPATH를 설정할 수 있다. 파이썬 인터프리터는 이 변수를 참고해서 사용자의 기본 디렉토리를 찾아낸다. 아래 예제는 /home/egoing/python/lib을 파이썬의 모듈 디렉토리로 추가하는 예다. 아래의 내용을 콘솔에 입력한다.
1
export PYTHONPATH=$PYTHONPATH:/home/egoing/python/lib

위와 같이 환경변수를 설정하면 터미널을 닫았을 때 환경변수가 사라진다. 아래와 같이 .bash_profile에 위의 내용을 추가하면 사용자가 로그인 할 때마다 위의 구문이 실행되면서 환경변수가 자동으로 셋팅된다. 파일을 수정하기 위해서 nano를 이용해서 파일을 수정한다면 아래와 같이 입력한다. 그리고 위의 내용을 .bash_profile의 내용에 추가한다.
1
nano ~/.bash_profile

윈도우

윈도우 계열에서는 환경변수를 설졍할 때 set과 setx 명령을 사용한다. set은 현재 명령 프롬프트에서만 사용되는 환경변수를 설정하는 것이고, setx는 영구적으로 환경변수를 설정하는 것이다. 환경변수를 설정하기 위해서는 우선 윈도우키+r을 이용해서 '실행' 창을 구동하고 거기에 cmd라고 입력한다.

C:\Python27\userlib을 모듈 기본 디렉토리로 추가하고 싶다면 명령 프롬프트에 아래의 명령을 차례로 입력한다.
1
2
set PYTHONPATH=%PYTHONPATH%;C:\Python27\userlib
setx PYTHONPATH %PYTHONPATH%;C:\Python27\userlib

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기