# 파이썬 패키지

패키지 작성 및 사용법

# 파이썬은 패키지로 분할 된 개별적인 모듈로 구성(모듈을 모아놓은 폴더를 패키지라고 생각하자.)


# __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

+ Recent posts