전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아 놓은 것이 바로 파이썬 라이브러리다.
"라이브러리"는 "도서관"이라는 뜻 그대로 원하는 정보를 찾아보는 곳이다. 모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알고 있으면 된다. 그러기 위해서는 어떤 라이브러리가 존재하고 어떻게 사용되는지 알아야 한다. 자주 사용하고 꼭 알아 두면 좋은 라이브러리를 중심으로 하나씩 살펴보자.
sys는 파이썬에서 제공하는 모듈이다. os모듈안에 있고, 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다. c언어로 작성되어 있다. 또한 sys는 built-in 되어 있으므로 bulit-in-modules에서 찾을 수 있다.
bulit-in-modules : 파이썬에서 제공하는 공식 라이브러리
sys.moudles
파이썬이 제일먼저 모듈이나 패키지를 찾는곳 딕셔너리구조 import 되있는 모듈과 패키징 저장 (다시 찾지 않아도 됨)
sys.path
모듈과 패키지 1,2를 찾고 마지막으로 sys.path를 찾음 리스트구조(string 요소) 처음의 리스트 요소부터 마지막까지 찾음 파이썬에 포함되어있는 built-in-modules sys.path에서도 모듈을 발견하지 못하면 ModuleNotFoundError 에러를 리턴
파이썬에서는 아래와 같은 순서로 module/package를 찾는다.
sys.modules -> bulit-in-modules -> sys.path
Absolute path
절대 경로는 기존 작업 디렉토리에 관계없이 파일 또는 폴더 위를 ..으로 설명하는 경로입니다. 사실 그것은 루트 디렉토리에 상대적입니다. 파일 또는 디렉토리의 전체 위치를 포함하는 이름입니다. 또한 절대 경로 이름 또는 전체 경로라고하며 항상 동일한 위치, 즉 루트 디렉토리로 시작합니다. 절대 경로에는 절대 URL에 지정된 자원을 찾는데 필요한 모든 정보가 포함됩니다. 다른 도메인에있는 웹 사이트에 엑세스하려면 도메인에서 절대 경로를 사용해야합니다
from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2
원도우스 : my_app/package2/subpackage1/module5.py
파이썬 : my_app/package2.subpackage1.module5.py
파이썬에서는 slash(/) 대신 dot(.) 으로 표현하고 이미 my_app 프로젝트 안에 있으므로 my_app
은 생략됩니다. 그러므로 다음처럼 경로를 표현하게 된다 .
package2.subpackage1.module5.py
이걸 from import 키워드를 사용해 import 하게 되면 다음처럼해보면
from package2.subpackage1.module5 import function2
Relative path
상대 경로는 현재 작업 디렉토리를 기준으로 파일 또는 폴더의 위치를 설명하는 경로입니다. 문서가 서로의 관계를 변경하지 않는 특정 웹 사이트 섹션은 동일한 도메인 내에있는 웹 사이트를 참조하는데 가장 좋습니다. 졀대 경로와 달리 상대 경로에는 단일 웹 사이트 내의 기존 문서에 대한 완전한 정보만 포함되므로 완전한 절대 경로를 제공 할 필요가 없습니다. 간단히 말해 상대 경로는 현재 웹 페이지의 위치에 상대적인 경로르 나타냅니다. 즉, 최상단 디렉토리를 기준으로 경로를 잡는게 아니라 import 하는 위치를 기준으로 경로를 정의합니다.
# package2/module3.py
from . import class1
from .subpackage1.module5 import function2
여기서 dot(.)은 import가 선언되는 파일의 현재 위치를 이야기 합니다. 현재위치는 pakage2/module3.py 이므로 현재 위치에서부터 원하는 모듈의 경로만 선언해주면된다.
# subpackage1/module5.py
from ..module4 import class4
Relaive path는 선언해야 하는 경로의 길이를 줄여준다는 장점이 있지만 헷갈리기 쉽고 파일 위치가 변경되면 경로 위치도 변경되어야 하는 단점이 있습니다. 그러므로 웬만한 경우 절대 경로를 사용하는 것을 권장 됩니다.
Path
문서에서 다른 문서로 연결(link)하거나 문서 내에 그림 또는 음악 등 각종 파일을 넣을 때, 문서에는 다른 문서로 연결할 때 다른 문서의 위치나 그림을 넣을 때 사용되는 그림의 위치를 브라우저에게 알려준다.
main.py
# absoulte path
#from calculator.add_and_multiply import add_and_multiply
# relative path
from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
add_and_multiply.py
from .multiplication import multiply
# from calculator.multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
multiplication.py
def multiply(a,b):
return(a*b)
__init__.py
파일의 역할에 대해서도 정리해당 파일의 코드가 실행되기 전에 패키지를 보관하는 디렉토리의 이름을 포함하는 목록으로 초기화됩니다. 이 변수는 수정 할 수 있다