[Python] 파이썬 패키지 생성과 사용법

파이썬 패키지 생성과 사용법


패키지(Packages)란?

패키지는 모듈과 디렉토리로 이루어져 있으며 도트(.)를 사용하여 모듈을 계층적(디렉토리 구조)로 관리 한다.
패키지 구조로 프로그램을 만들면 유지보수, 공동작업 할 때 유용하게 사용 가능하다.

말이 패키지지 그냥 폴더 안에 있는 모듈들을 사용하는 방법에 대해 다룬다.
예제를 보면서 패키지를 이해해보자.



패키지 만들기

우선 패키지를 만들어보자.

1. C:\Packages\a 폴더에 A.py 하나,
   C:\Packages\b 폴더에 B.py 하나를 옮겨 놨다.
   A.py와 B.py의 내용은 아래에 있다.




2. A.py의 내용은 다음과 같다.
#A.py
def print():
return print1("A 입니다.")

3. B.py의 내용은 다음과 같다.
#B.py
def print():
return print1("B 입니다.")


4. 하지만 A.py와 B.py만 추가하는 것이 아니다.
__init__.py 파일도 각각 A.py, B.py가 있는 폴더 안에 넣어 줘야 한다.
왜냐하면 특정 디렉토리의 모듈을 import 하기 위해서는 __all__ 변수를 설정하여 모듈을 정의 해줘야 한다.
만약 __init__.py 파일을 빼 먹으면 모듈을 찾지 못해 오류가 발생한다.




5. __init__.py 파일의 내용은 아래와 같다.
#A _init__.py

__all__ = ['A']
#B _init__.py

__all__ = ['B']


6. 패키지는 이로써 완성 되었다. 하지만 현재 Packages 폴더는 프로젝트 밖에 있으므로 환경 변수를 추가해 줘야 한다.

아래 링크에서 환경 변수 추가하는 방법에 대해 작성되어 있으므로 파이참 이라면 따라 하면된다. 환경변수이름은 PYTHONPATH로 하고 변수는 [C:/] 로 한다.

당신이 파이썬에서 하고 있다면 set PYTHONPATH = C:/ 를 입력하면 된다.

이렇게 하면 패키지를 사용할 준비도 끝났다.



패키지 사용하기

이제 패키지를 사용해보자. 
우선 패키지를 사용하는 방법에는 3가지가 있다.


1. 가장 기본적인 방법으로 모듈을 import하여 모듈의 함수를 사용한다.
이 때는 모듈 A, B 까지의 경로를 모두 적어야 한다.
#test.py

import Packages.a.A
import Packages.b.B

a = Packages.a.A.print1()
b = Packages.b.B.print1()

print(a)
print(b)
결과 :
A 입니다.
B 입니다.



2. from 명령어를 사용해서 경로는 생략하고 모듈의 이름만 적어도 되는 방법이다.
#test.py

from Packages.a import A
from Packages.b import B

a = A.print1()
b = B.print1()

print(a)
print(b)
결과 :
A 입니다.
B 입니다.


3. 모듈의 함수를 직접 호출하는 방법이다.

여기서 흥미로운 부분이 예제의 A.py와 B.py의 함수가 중복이 됐을 때 나중에 import한 B.py의 함수가 호출되는 것을 확인 할 수 있다.
#test.py

from Packages.a.A import print1
from Packages.b.B import print1

a = print1()
b = print1()

print(a)
print(b)
결과 :
B 입니다.
B 입니다.



같은 디렉터리의 모듈 사용하기

같은 디렉터리의 모듈들이 서로의 함수를 사용하는 방법이 있다.
예제로는 A.py가 B.py의 함수를 사용하는 예시를 들겠다.


1. A.py의 내용을 다음과 같이 수정 한 후 저장을 하자.
#A.py

import Packages.b.B
def print1():
return Packages.b.B.print1()

2. 프로젝트 test.py로 돌아와서 실행을 하면 B.py의 print1() 함수가 출력된다.
#test.py
import Packages.a.A

a = Packages.a.A.print1()
print(a)
결과 : B 입니다.


댓글

이 블로그의 인기 게시물

[Arduino] 아두이노 초음파 센서(HC-SR04) 사용하기

[Arduino] 아두이노 조이스틱 사용하기

[자연 환경] 농약의 장단점 농약이 환경과 인간에게 미치는 영향