파이썬에서 변수나 함수, 클래스 등을 모아놓은 파일.
이유는? 다른 파일에서 재사용 가능하게 하기위해 / 전체 코드가 너무 커졌을때
이렇게 만들어놓은 module 은
import <modeule name>
으로 사용해주면 된다. 근데 module size가 너무 크고 module 안에서 특정 함수만 사용하면 된다면
from <module name> import <fuction name>
으로 import해주면된다.
module 과 마찬가지로 다른 파일에서 불러와서 사용하는 것이나, module 보다 훨씬 복잡한 코드이다.
이렇게 from core import model
core라는 패키지의 model 이라는 module 에서 import 해서 다른 파이썬 파일에서 사용이 가능한 것이다.
이 package를 모아놓은 개념이 Library 라고 할 수 있는데 이 종류는 다음과 같다.
Python Standard Library : 따로 install 하지 않아도 사용할 수 있는 Package(ex. time, sys, os)
Python Installing Packcages : install 해서 사용하는 Package(ex. Django, Beautifulsoup)
user가 직접 만든 Package
Python에서는 이러한 Module/ Package 들을 다음의 순서로 탐색한다.
1. sys.modules
2. built-in modules
3. sys.path
sys.path는 package의 __init__ 변수와 같이 string Value로된 list 이다.
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9
와 같은 elements 들을 보면 각각이 경로를 의미한다.
해당 경로에 import 하고자 하는 package가 위치해 있는지 확인한다.
위의 순서대로 파이썬은 sys.modules -> built-in modules -> sys.path 로 module, pakage를 찾고 sys.path 에도 없다면 모듈을 찾을 수 없다는 err를 반환한다.
sys 와 같은 built-in package나 pip 로 설치한 Django 같은 package는 바로 import 할 수 있다.
그러나 local package를 개발 했다면 해당 package 의 위치에 맞게 directory 경로를 정확하게 선언해줘야한다.
예를 들어 위와 같은 경로에서 test 라는 directory 의 package1 안에 calculater 라는 module 에서 average 이라는 function 을 import 하고 싶다면
from test.package1.calculater import average
이런 코드로 적어주면 된다.
이러한 경로를 Absolute Path 라고 한다.
그렇지만 위의 directory 보다 더 복잡한 경로라면 경로가 너무 길어지게 된다.
이럴때 사용하는 것이 Relative Path 이다.
relative path 는 최상단이 기준이 아닌 import 기능을 사용하는 현재 파일의 위치가 기준이 된다.
예를 들어 package1>calculater 에서 cal2 module의 function을 import 하고 싶다면
현재 경로가 package1 에 있기 때문에
from .package2.cal2 import function
이렇게 코드를 써주면 된다. from뒤의 .(dot notation)이 현재 위치를 나타내주게 된다.
이제 패키지를 직접 만들어보겠다.