Python

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

Let it out 2024. 2. 8. 13:47

 

패키지(Packages)란?

패키지는 모듈과 디렉토리로 이루어져 있으며 도트(.)를 사용하여 모듈을 계층적(디렉토리 구조)로 관리 한다.
 
패키지 구조로 프로그램을 만들면 유지보수, 공동작업 할 때 유용하게 사용 할 수 있다.
 
쉽게 설명하자면 폴더 안에 있는 모듈들을 사용하고 관리하는 것이 패키지다.
 
예제를 보면서 패키지를 이해해보자.
 
 
 

 

패키지 만들기

우선 모듈로 사용할 A.py, B.py 파일을 만들었다.
 
 
A.py
#A.py
def print1():
    return print("A 입니다.")
 
B.py
#B.py
def print1():
    return print("B 입니다.")
 
 
 
 
C:\Packages\a 폴더에 A.py,
C:\Packages\b 폴더에 B.py를 옮겼다.
 
 

 

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

__all__ = ['A']

 

#B의 _init__.py

__all__ = ['B']

 

 
 

각각 경로에 넣어주자.

 

 

 
 
 

환경 변수 추가

패키지는 이제 완성 되었다.
 
하지만 현재 Packages 폴더는 프로젝트 밖에 있으므로 환경 변수를 추가해 줘야 한다.
 
 
파이참 이라면 아래 링크에서 환경 변수 추가하는 방법을 따라해주면 된다.
 
환경변수이름은 PYTHONPATH로 하고 변수는 [C:/] 로 한다.
 
 

[Python] 파이썬, 파이참(pycharm) 다른 경로에 있는 모듈 불러오기

다른 디렉토리에 있는 모듈을 불러오는 방법은? 일반적으로 모듈을 불러 올 때 프로젝트 내 경로에 모듈이 없으면 에러가 발생한다. 하지만 sys모듈 이나 환경 변수를 사용하면 다른 경로에 있는

goodprogramer.tistory.com

 
당신이 파이썬에서 하고 있다면 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 입니다.
 

 

반응형