모듈은 스크립트 파일이 한 개지만 패키지는 폴더(디렉터리)로 구성되어 있다.
__init__.py 파일 : 해당 폴더는 패키지로 인식된다. 그리고 기본적으로 __init__.py 파일의 내용은 아무것도 채워넣지 않아도 된다.(python 3.3 v 이상부터는 __init__.py 파일이 없어도 패키지로 인식됨.) 하지만 하위 버전에도 호환되도록 __init__.py 파일을 작성하는 것을 권장.
# 패키지에 모듈 만들기
# 패키지 사용하기
- import 패키지.모듈
- 패키지.모듈.변수
- 패키지.모듈.함수()
- 패키지.모듈.클래스()
main.py 파일은 calcpkg 패키지 폴더 안에 넣으면 안된다.
clacpkg 안에 있는 operation, geometry 모듈에서 함수를 호출하였습니다.
# from import 로 패키지의 모듈에서 변수, 함수, 클래스 가져오기
- from 패키지.모듈 import 변수
- from 패키지.모듈 import 함수
- from 패키지.모듈 import 클래스
>>> from calcpkg.operation import add, mul
>>> add(10, 20)
30
>>> mul(10, 20)
200
참고|패키지의 모듈과 __name__
패키지의 모듈에서는 __name__ 변수에 패키지.모듈 형식으로 이름이 들어갑니다. 즉, calcpkg 패키지의 geometry.py 에서 __name__ 의 값을 출력하도록 만들고, import 로 가져오면 'calcpkg.geometry' 가 나온다.
참고|모듈과 패키지를 찾는 경로
import sys
print(sys.path) # sys.path 는 파이썬 모듈들이 저장되어 있는 위치를 나타냄
# ['C:\\Users\\user\\project\\coding\\module_package', 'C:\\Users\\user\\anaconda3\\envs\\lf\\python38.zip', 'C:\\Users\\user\\anaconda3\\envs\\lf\\DLLs', 'C:\\Users\\user\\anaconda3\\envs\\lf\\lib', 'C:\\Users\\user\\anaconda3\\envs\\lf', 'C:\\Users\\user\\anaconda3\\envs\\lf\\lib\\site-packages', 'C:\\Users\\user\\anaconda3\\envs\\lf\\lib\\site-packages\\win32', 'C:\\Users\\user\\anaconda3\\envs\\lf\\lib\\site-packages\\win32\\lib', 'C:\\Users\\user\\anaconda3\\envs\\lf\\lib\\site-packages\\Pythonwin']
지금까지 모듈과 패키지는 현재 폴더(디렉터리) 에 만들었다. 파이썬에서는 현재 폴더에 모듈, 패키지 가 없으면 다음 경로에서 모듈, 패키지를 찾는다.
sys 모듈의 path 변수에는 모듈, 패키지 를 찾는 경로가 들어있다. 여기서 site-packages 폴더에는 pip 로 설치한 패키지가 들어간다. 그리고 자신이 만든 모듈, 패키지도 site-packages 폴더에 넣으면 스크립트 파일이 어디에 있든 모듈, 패키지를 사용할 수 있다.
만약 가상 환경 (virtual environment) 를 만들어서 모듈과 패키지를 관리한다면 가상환경/Lib/site-packages 폴더에 모듈과 패키지가 들어간다.
'Programming > Python' 카테고리의 다른 글
[프로그래머스 Python] 자릿수 더하기 (0) | 2024.06.26 |
---|---|
[python] time (0) | 2023.03.30 |
Module (0) | 2023.03.22 |
[list] python list random 추출 (0) | 2023.03.17 |
[Error] Attribute Error (0) | 2023.03.16 |