014. Python
sys.modules
- 파이썬이 모듈이나 package를 찾기위해 가장 먼저 확인하는 곳
sys.modules
는dictionary
형태- 한 번 실행된
import
된module
과package
들을 저장(한 번 실행된module
과package
들을 다시 찾지 않도록 하는 기능) - 로 import 하는 모듈은
sys.modules
에서 찾을 수 없음
sys.path
sys.path
는string
요소들을 가지고 있는list
형태string
요소들은 경로를 나타냄
['',
'/Users/song-eun-u/anaconda3/bin',
'/Users/song-eun-u/anaconda3/lib/python36.zip',
'/Users/song-eun-u/anaconda3/lib/python3.6',
'/Users/song-eun-u/anaconda3/lib/python3.6/lib-dynload',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/aeosa',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/Users/song-eun-u/.ipython']
list
의 각 경로를 하나 하나 확인하면서 해당 경로에import
하고자 하는package
가 위치해 있는지 확인
1. sys.modules sys.path 차이
sys.modules
는 한번도 실행하지 못한module
이나package
의 정보를 가지고 있지 않지만sys.path
는 경로에 저장되어 있다면 찾아낼 수 있다
2. sys 도 import 해야하는 모듈입니다. 파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?
sys
모듈은 파이썬에 내장되어 있는 모듈로 파이썬 내부에 저장되어있다
import sys
print(sys.builtin_module_names)
builtin module
의 목록을 불러와서 확인할 수 있다
3. Absolute path와 relative path의 차이점을 서술해 주세요.
Absolute path
의 경우 나의 위치와 관계없이 원하는 곳이 어떤 경로 안에 위치해 있는지 지정해서 움직이는 방면,relative path
는 현재 나의 위치를 기준으로 이동하고 싶은 위치로 이동하는 방법이기 때문에, 아무래도Absolute path
보다는 헷갈릴 가능성이 존재한다
4. calculator 패키지 만들기
5. main.py에서 상대경로로 add_and_mutiply 를 임포트 했을 때 발생하는 에러를 확인하고, 다음의 파이썬 공식 문서를 참고해서 main module 에서는 패키지의 모듈을 어떻게 임포트 해야하는지 블로깅 해주세요.
- 참고 자료를 살펴 보니
relative path
의import
는 현재의 모듈을 기반으로 이루어진다. 직접 실행하는 모듈(메인 모듈)의 이름은 항상 "__main__"이고, 파이썬에서 메인 모듈은 항상absolute path
를 사용해야하기 때문에relative path
를absolute path
로 설정해주면 된다
- 값이 5로 잘 출력되는 상황이다
6. add_and_multiply.py에서 multiply함수를 절대경로와 상대경로도 각각 임포트 해보고 main 모듈과 차이점을 생각해보고 결과를 출력해 보세요.
- 상대 경로와 절대 경로 모두 결과를 잘 출력해 준다
add_and_multiply.py
는\__main__.py
가 아니기 때문에 절대 경로든 상대 경로든 문제 없이 동작한다.
7. init.py 파일의 역할에 대해서도 정리해서 블로깅 해주세요.
\__init__.py
가 존재하는 디렉토리는 패키지의 일부임을 알려주는 역할을 한다- package 초기 설정을 할 수 있는 역할을 한다
\__init__.py
파일이 존재하지 않는다면 패키지의 일부인지 인식을 하지 못해 속성을 가지고 있지 않는다는 에러가 발생package
실행 시 설정해주고 싶은 초기 설정이 있다면 이 파일에 초기 설정에 관련된 코드들을 작성하면 작성 한 코드의 내용대로package
실행 시 자동으로 실행
Author And Source
이 문제에 관하여(014. Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hiyee-gj/014.-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)