52. How Import Statement Finds Modules & Packages m

1. sys.modules 와 sys.path의 차이점을 서술해 주세요.

sys.modules 과 sys.path 를 출력해보시면 ,
sys.modules는 자료형이 딕셔너리 , sys.path는 리스트로 각각 다릅니다 . 파이썬이나 모듈을 찾을떄 sys.modules는 가장먼저 검색하여 찾고 sys.path는 가장 마지막으로 찾는 경로이다 .
sys.path에서도 모듈,파이썬을 찾지못하였을경우 에러를 반환한다 .

2. sys도 import 해야하는 모듈입니다. 파이썬은 sys 모듈의 위치를 어떻게 찾을 수 있을까요?

sys는 파이썬에서 기본적으로 포함하고있는 모듈로, sys.module 디렉토리 또는 sys.path 경로를 확인하여 module의 위치를 확인 할 수 있다.

3. Absolute Path와 Relative Path의 차이점을 서술해 주세요.

절대경로 - 처음부터 시작해서 해당 파일,폴더의 위치를 나타낸것 프로젝트 폴더 최상위(root)기준으로 경로를 표시

상대경로 - 현재위치(.)부터 시작해서 해당 파일,폴더의 위치를 나타낸것
상대경로는 import된 파일기준으로 경로가 표시되며,

  • /: 루트위치
  • .(dot)/ : 하나는 현재폴더의위치
    -../ : 현재위치에서 상위디렉토리로 가는 경로

4. package 만들기


5. main.py에서 상대경로로 add_and_mutiply 를 임포트 했을 때 발생하는 에러를 확인하고

다음의 파이썬 공식 문서를 참고해서 main module 에서는 패키지의 모듈을 어떻게 임포트 해야하는지 블로깅 해주세요.


부모 패키지가 정의되어있지 않은 상태에서 상대 경로로 import를 시도해서 발생한 import error다.
오류를 해결하기위해 참고자료에 요렇게 정의 되어있다 .

상대적 경로는 현재 모듈의 이름을 기반으로합니다. 주 모듈의 이름은 항상
"__main__"이므로 Python애플리케이션의 주 모듈로
사용하려는 모듈은 항상 절대 경로로 사용해야합니다.

문제해결 -절대경로로 바꿈.

6. add_and_multiply.py에서 multiply함수를 절대경로와 상대경로도 각각 임포트 해보고 main 모듈과 차이점을 생각해보고 결과를 출력해 보세요.

절대경로

from calculator.multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)

상대경로

from .multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)

결과값은 5로 둘다 같다

main 모듈과 차이점-

add_and_multiply.py는 __main__.py가
아니여서 작동에 문제가 없다 . 
하지만 main같은경우 상대경로는 
모듈의 이름이 연관이있으므로 . 
차이점이라면 고것이 차이점이다 !

7. init.py 파일의 역할에 대해서도 정리해서 블로깅 해주세요.

__init__.py 은  존재하는 디렉토리는 패키지의 일부임을 알려줍니다 .
package의 초기설정을 할수있는 역할을 한다.

1.__init__.py 파일이 존재하지 않는다고 하면 .
패키지의 일부인지 인식을 하지 못하기 때문에 에러가 발생하게 된다.

2.현재는 __init__.py파일은 빈 파일이지만 package 실행시 설정해주고 
싶은 초기설정이 있다면 파일에 초기설정에 관련된 코드를 작성한다. 
그러면 작성한 코드 내용대로 package 실행시 자동 실행된다 . 

좋은 웹페이지 즐겨찾기