본문 바로가기

언어/Python

[Python] Python(파이썬) 모듈 및 패키지

파이썬 경로(PATH)

구분 예시
Unix export PYTHONPATH=$PATHONPATH:/home/test/python/lib
Windows set PYTHONPATH=%PYTHONPATH%;C:\myPython\userlib 
setx PYTHONPATH %PYTHONPATH%;C:\myPython\userlib

만약에 환경 변수쪽에서 PATH를 추가하고 싶을 경우 Unix에서는 bash shell, Windows console에서 위와 같이 입력하면 된다. Set 콘솔이 열려있을 경우만, 그리고 setx는 계속 설정한 PATH를 유효하게 해준다.

파이썬 모듈(Module)

# module_test.py

def sum(a, b):
    return a + b

def mul(a, b):
    return a * b

위의 예제 코드와 같이 덧셈 및 곱셈 함수처럼 여러 기능의 함수들을 묶어서 라이브러리를 만든 후에 파이썬의 특정 프로젝트에서 활용할 수 있다. 이러한 라이브러리들의 모음을 모듈이라고 한다.

 

# test.py

import module_test

ret = module_test.sum(10, 20)
print(ret)

ret = module_test.mul(10, 20)
print(ret)

함수를 사용할 때의 키워드‘import 모듈명이다. 그리고 모듈 내부의 함수를 사용하기 위해서는 모듈명.함수로 사용 가능하다. 이러한 모듈명의 확장자는 py, pyc, pyd를 사용 가능하다.

  • py는 소스 레벨까지 다 보여주는 파이썬 모듈이다.
  • pyd는 확장 python으로 C로 된 module이다.
  • pyc compiled python으로 파이썬을 미리 컴파일 해놓은 것이다(인터프리트).
    • pyc를 만들기 위해서는 콘솔창에서 python -m '모듈명' aa.py 을 입력한다.
    • 출력 결과로 aa.pyc를 얻을 수 있다.
import sys

print(sys.path)
# print(sys.path.append(“패스”)

파이썬 모듈의 위치는 파이썬 경로(PATH)에 있어야 한다. 파이썬 PATH는 기본적으로 설치했을 때 설정되어 있는 경로가 있다. 위의 예제와 같이 sys import해주고 리스트 객체인 path를 사용하면 파이썬의 PATH를 확인 가능하다. 따라서 파이썬의 PATH 모듈을 위치시키면 import를 사용했을 때 인식할 수 있다.

 

# desktop.py
def path_test():
	return 1

컴퓨터 바탕화면에 위의 예제 코드와 같은 .py 파일을 하나 생성한다.

 

# test.py
import sys
sys.path.append("C:/Users/hong/Desktop/")
import desktop

print(sys.path)

rst = desktop.path_test()
print(rst)

위의 예제 코드와 같이 만약 기본적으로 설정된 path쪽이 아닌 다른 쪽 디렉터리(바탕화면)에 있는 모듈을 프로그램에서 인식시키고 싶을 때는 append를 사용하여 특정 경로를 추가시켜주면 된다. 이때 주의할 점은 append 한 이후에 import를 수행해야한다. 결과를 출력하면 추가한 경로(C:/Users/hong/Desktop/) 및 리턴 값(1)을 확인할 수 있다.

 

from module_test import sum, mul
# from module_test import * # module 안에 있는 모든 함수를 다 사용하겠다.

ret = sum(10, 20)
print(ret)

ret = mul(10, 20)
print(ret)

모듈을 import하는 다양한 방법들이 있다. 예제 코드와 같이 [from 모듈 import 함수]를 사용하게 되면 해당 모듈에 있는 함수들을 직접 실행할 수 있다. 그리고 module 안에 여러 함수들을 한 번에 다 사용하고 싶다면 *를 사용하면 된다.

패키지 개념 및 기본 구조

xx.py와 같이 여러 함수가 포함된 파이썬 모듈을 생성하여 사용하면 어떤 용도인지 확인이 어렵다. 예를 들어 모든 영화를 영화 폴더에 저장하게 된다면 어떤 장르인지 알 수 없는 것과 같다. 따라서 각 영화를 장르 별로 구분할 필요가 있는데 이런 구분들을 패키지라 부른다.

결국, 각 패키지에 관련된 파이썬 모듈을 넣어 분류해야 한다. 이때 __init__.py는 패키지를 만들 때 자동으로 생성되는 파일이며 초기화 작업을 할 때 사용할 수 있다.

 

파이썬 패키지 생성

파이썬 프로젝트에서 위의 그림과 같이 (마우스 오른쪽 클릭 -> New -> Python Package)를 수행하면 패키지가 생성된다.

  1. Game 패키지를 생성한다.
  2. Game 아래 sound 패키지를 생성 후에 load 및 play 함수를 구현한다.
  3. Game 아래 image 패키지를 생성 후에 open 및 change 함수를 구현한다.

위의 내용대로 Game 패키지를 생성한 후 sound 및 image 패키지를 하위에 만든 후 각각 필요한 함수들이 포함된 모듈들을 생성한 결과이다.

 

# open.py
def open1():
    print("open1")

def open2():
    print("open2")

각 .py 내부의 함수들은 간단한 출력을 하도록 구성하였다.

 

# test.py
import game.sound.load

game.sound.load.load1()
game.sound.load.load2()

테스트를 위한 test.py에서 위에서 생성한 패키지들을 import한 후 안에 선언된 모듈들을 사용한 예제 코드 및 결과이다. 그러나 이렇게 사용하면 굉장한 불편하다. 따라서 이를 해결하기 위한 축약어가 있다.

 

# test.py
import game.sound.load as LOAD

LOAD.load1()
LOAD.load2()

이전의 예제 코드와는 다르게 보다 간결해진 것을 확인 가능하다. 이처럼 import 할 때 축약어 as를 활용해서 보다 편하게 모듈들을 사용할 수 있다.

 

from game.sound.load import *

load1()
load2()

이외에도 from을 사용하여 모듈 안에 선언된 함수들을 직접 사용할 수도 있다. 더욱 더 간단해진 것을 확인 가능하다.