TIL 14 | Python 3

saneeeeeeee_Ya·2021년 4월 16일
0

🛸

목록 보기
14/25
post-thumbnail

sys

sys.modules / sys.path

import하는 package나 module을 확인하기 위해 사용된다

순서
sys.modules >> built-in modules >> sys.path

sys.modules

제일 처음 처음 경로를 판단하기 위해서 사용된다
새로 import된 Module/Package는 나오지 않는다
딕셔너리 형태로 Modules / Package의 경로

Bulit-in Modules

파이썬을 설치할 때 내장된 Library이다(sys, math 등등)

sys.path

리스트 형태로 Modules / Package의 디렉토리

sys.path는 리스트 형태이므로 append()를 이용하여 경로를 추가할 수 있다

sys.path에서도 모듈을 발견하지 못하면 ModuleNotFoundError 에러를 리턴


Package

Absolute path / relative path

  • Absolute path

어느 위치에 있던 항상 같은 경로를 나타낸다
프로젝트의 최상단에서 경로를 시작하게 된다

  • relative path

현재에 위치한 곳에서 해당되는 위치에 대한 경로이다
위치한 곳에 따라 경로가 달라지므로 디렉토리 내의 파일 경로를 사용자가 확인이 필요하다

1. Main.py(상대경로 / 절대경로)

👇 Main.py에서 상대경로로 임포트를 했을 때

import를 하지 못하고 에러발생

👇 Main.py에서 절대경로로 임포트를 했을 때

절대경로로 import를 하니 정상적으로 계산 값이 출력이 되었다

python 공식문서를 참조하면

👉상대 임포트가 현재 모듈의 이름에 기반을 둔다는 것에 주의하세요. 메인 모듈의 이름은 항상 "main" 이기 때문에, 파이썬 응용 프로그램의 메인 모듈로 사용될 목적의 모듈들은 반드시 절대 임포트를 사용해야 합니다.

2. 패키지 내부 파일(상대경로 / 절대경로)

3. __init__.py

1. __init__.py

__init__.py를 통하여 해당 디렉토리가 패키지라는 것을 알려준다

2. __all__

*을 이용하여 import할시 __init__.py내에 __all__라는 변수를 설정하여 import를 할 모듈을 정해주어야 인식이 가능하다

📣 예시

👇 __init__py인 파일에 __all__add_and_multiply는 제외하고 multiplication만 포함시켜본다

👇 import를 해보니 add_and_multiply.py를 인식하지 못 한다

👇 다시 __init__.py로 돌아가 __all__add_and_multiply도 포함시켜본다

👇 에러가 해결되고 정상적으로 출력이 되었다

https://docs.python.org/ko/3/tutorial/modules.html#intra-package-references

profile
🐜https://action2thefuture.github.io/🐜

0개의 댓글