
# 파이썬 패키지
# 패키지 작성 및 사용법
# 파이썬은 패키지로 분할 된 개별적인 모듈로 구성(모듈을 모아놓은 폴더를 패키지라고 생각하자.)
# __init__.py : 파이썬에게 이건 패키지라고 import해서 쓸 수 있다고 인식시켜주는 것
# Python3.3 부터는 없어도 패키지로 인식 -> 단, 하위 호환을 위해 작성 추천
# 상대 경로 : ..(부모 디렉토리), .(현재 디렉토리 [생략가능]) -> 모듈 내부에서만 사용
상대경로: 내가 작업하는 위치를 기준으로 경로가 결정
절대경로: 최상단 디렉토리를 기준으로 하는 경로이다. 어느 파일, 어느 위치에서든 경로가 항상 동일하다.

module1.py
import sys import inspect def mod1_test1(): print ("Module1 -> Test1") print("Path : ", inspect.getfile(inspect.currentframe())) #현재 이 파일이 실행되는 경로를 표시해주는 메소드 def mod1_test2(): print ("Module1 -> Test2") print("Path : ", inspect.getfile(inspect.currentframe()))
module2.py
import sys import inspect def mod2_test1(): print ("Module2 -> Test1") print("Path : ", inspect.getfile(inspect.currentframe())) def mod2_test2(): print ("Module2 -> Test2") print("Path : ", inspect.getfile(inspect.currentframe()))
__init__.py (sub1폴더에 있는것)
__all__ = ['module1'] #__init__파일이 아예 비워졌으면 상관이 없지만 # all리스트 형식이 있으면 거기에 적혀있는 파일 이름을 허락한다. #__all__ = ['module2','module3']이렇게 적혀있으면 module1이 없기 때문에 오류가 난다.
chapter06_03.py
# 예제1
import sub.sub1.module1 #append를 시키지 않아도 같은 경로나 또는 다른 위치에 있는 것들을 찾아갈 수 있다. #sub패키지 안에 sub1이라는 패키지 안에 모여있는 모듈 중에서 module1을 가지고 와라 import sub.sub2.module2 # 사용 sub.sub1.module1.mod1_test1() #Module1 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py sub.sub1.module1.mod1_test2() #Module1 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py # 사용 sub.sub2.module2.mod2_test1() #Module2 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py sub.sub2.module2.mod2_test2() #Module2 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py
# 예제2
from sub.sub1 import module1 from sub.sub2 import module2 as m2 # Alias(as) module2에게 m2라는 별명을 준 것. # 사용 module1.mod1_test1() #Module1 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py module1.mod1_test2() #Module1 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py # 사용 m2.mod2_test1() #Module2 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py m2.mod2_test2() #Module2 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py
# 예제3
from sub.sub1 import * # *는 전부 다 가져오겠다라는 뜻이다. from sub.sub2 import * # 사용 module1.mod1_test1() #Module1 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py module1.mod1_test2() #Module1 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub1/module1.py # 사용 module2.mod2_test1() #Module2 -> Test1 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py module2.mod2_test2() #Module2 -> Test2 #Path: /Users/hong-gildong/Desktop/강의예제/예제 소스 파일/sub/sub2/module2.py
추가설명
TIL#28 import error 상대경로 절대경로
상대경로와 절대경로에서 어떤 경우에 import에러가 나타나는지 살펴보자. 상대경로: 내가 작업하는 위치를 기준으로 경로가 결정 절대경로: 최상단 디렉토리를 기준으로 하는 경로이다. 어느
higher77.tistory.com
TIL#36 하위,동일,상위파일 import하기
TIL#28 import error 상대경로 절대경로 상대경로와 절대경로에서 어떤 경우에 import에러가 나타나는지 살펴보자. import os print(os.path.abspath('.')) #현재 폴더의 절대경로를 물어보는 것 C:\Users\Jaesa..
higher77.tistory.com
'Python > Today I learned' 카테고리의 다른 글
TIL#29 예외(exception) (0) | 2021.05.19 |
---|---|
TIL#28 import error 상대경로 절대경로 (0) | 2021.05.18 |
TIL#26 모듈과 import, sys.path (0) | 2021.05.18 |
TIL#25 클래스 와 인스턴스(중요) (0) | 2021.05.18 |
TIL#24 input 사용법 (0) | 2021.05.18 |