[Python] 파이썬 절대 경로와 상대경로 import
- 파이썬(Python)
- 2022. 4. 5. 18:27
참조
1. import 요약
- python에서 py 파일은 모듈이라고 합니다.
- python에서
__init__.py
가 포함된 폴더를 패키지라 합니다. (python3는 조금 다름) - 모듈이 다른 모듈이나 패키지를 액세스 하기 위해 import를 사용합니다.
2. import 작동 원리
import abc
- python은
abc
를 찾는다.sys.modules
를 확인한다.sys.modules
는 이전에 가져온 모든 모듈의 캐시이다.- 내장 모듈 목록을 확인한다.
sys.path
를 기준으로 확인한다.sys.path
는 현재 폴더가 포함된다.
- 이름은 찾을 수 없는 경우
ModuleNotFoundError
를 반환합니다.
3. import 문의 구문
- 패키지를 가져오는 경우
__init__.py
를 모듈로 가져옵니다.
import abc
- abc 패키지 혹은 모듈을 직접 가져옵니다.
from abc import xyz
- abc 패키지에서 xyz 모듈 , 하위패키지 , 클래스 혹은 함수를 가져옵니다.
import abc as other_name
- 가져온 이름을 바꾼다. other_name으로 참조를 사용합니다.
4. import 문 스타일
- import문을 작성할 때 지침이 있습니다. (https://pep8.org/#imports)
- import는 모듈 주석 뒤 파일 맨위에 작성해야 한다.
- import는 그 종류에 따라 구분해라. 공백을 두어 구분하라
- 표준 라이브러리
- 타사 패키지
- 로컬 패키지
"""Illustration of good import statement styling.
Note that the imports come after the docstring.
"""
# Standard library imports
import datetime
import os
# Third party imports
from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
# Local application imports
from local_module import local_class
from local_package import local_function
5. 절대 경로 import
- 경로
└── project ├── package1 │ ├── module1.py │ └── module2.py └── package2 ├── __init__.py ├── module3.py ├── module4.py └── subpackage1 └── module5.py
- 사용방법
from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2
- 직관적이고 부작용이 작습니다.
6. 상대 경로 import
- python3에서는 암시적 상대 경로가 더이상 지원되지 않는다. 명시적 상대 경로를 사용합니다.
- 경로
└── project
├── package1
│ ├── module1.py
│ └── module2.py
└── package2
├── __init__.py
├── module3.py
├── module4.py
└── subpackage1
└── module5.py
- 사용방법
# package1/module1.py
from .module2 import function1
# package2/module3.py
from . import class1
from .subpackage1.module5 import function2
- 상대 경로를 사용하면 절대 경로로 작성하는 경우보다 짧게 작성할 수 있는 상황이 많습니다.
728x90
'파이썬(Python)' 카테고리의 다른 글
[Python] 파이썬 도커 파일 및 이미지 만들기 (0) | 2022.04.05 |
---|---|
[python] 파이썬 단위테스트 (0) | 2022.04.05 |
[Python] 리스트 컴프리헨션 (0) | 2022.04.03 |
[Python] 파이썬 설치경로 확인하기 (0) | 2022.03.18 |
[Python] 파이썬 단위테스트 Mock 파일 사용하기 (0) | 2022.03.13 |
이 글을 공유하기