반응형
패키지(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를 옮겼다.
![](https://blog.kakaocdn.net/dn/dBY7zT/btsED4hz2u1/iaT1GtFp4rdQw1JoU1nQNk/img.png)
![](https://blog.kakaocdn.net/dn/n87xA/btsEB1shLyI/ssjb2q8XLHJpH9cyZc1jaK/img.png)
하지만 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']
각각 경로에 넣어주자.
![](https://blog.kakaocdn.net/dn/boCsL3/btsEDpTNsWK/LttB5MGeulFyCqg18npKbK/img.png)
![](https://blog.kakaocdn.net/dn/TZgZ9/btsED0zshNQ/kYVB15b8wtOnONpVIyZUF1/img.png)
환경 변수 추가
패키지는 이제 완성 되었다.
하지만 현재 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 입니다.
반응형
'Python' 카테고리의 다른 글
[Python] 파이썬 절대값 구하기/ abs() 함수 (0) | 2024.02.08 |
---|---|
[Python] 파이썬 예외 처리(try, except/ finally/ pass/ raise) (1) | 2024.02.08 |
[Python] 파이썬 모듈(module) 생성과 사용법 (0) | 2024.02.08 |
[Python] 파이썬, 파이참(pycharm) 다른 경로에 있는 모듈 불러오기 (0) | 2024.02.08 |
[Python] 파이썬 메서드 오버라이딩 이란? (0) | 2024.02.08 |