티스토리 뷰

Programming/Python

[Python]__init__.py

heyhyo 2019. 3. 9. 11:02

pycharm이라는 파이썬 IDE로 파이썬 패키지를 생성하면 자동으로 함께 생성되는 __init__.py라는 파일이 있다. 이 파일이 어떤 역할을 하는지 간단하게 알아보고자 한다.






위 이미지를 보면 각 디렉터리마다 하나씩 __init__.py라는 파일을 가지고 있는 것을 볼 수 있다.


용도는 간단하다. 이 파일이 존재하는 디렉터리는 패키지의 일부임을 알려주는 역할을 한다. 따라서 __init__.py라는 파일이 없는 디렉터리는 패키지로 인식되지 않는다.


그렇다면 위의 상황에서 calc패키지의 operate패키지 내의 add.py를 import하여 사용해 보도록 하겠다. 먼저 환경변수를 설정해 보도록 하자.




PYTHONPATH



PYTHONPATH라는 환경변수가 있는데 이는 파이썬의 패키지 경로를 담고 있다. 따라서 환경변수에 포함시키고자 하는 패키지의 경로를 입력해주면 파이썬 인터프리터는 이 경로를 참조할 수 있다.





calc라는 패키지가 존재하는 경로를 다음과 같이 입력해준다. 자신의 패키지 경로에 따라 PYTHONPATH의 값이 달라지므로 주의하자!


set PYTHONPATH=c:\Users\hyoje\PycharmProjects\Practice




import



파이썬 인터프리터를 실행시켜서 해당 패키지를 임포트한다. 그 전에 add.py의 코드를 잠시 보도록 하자.


# add.py
def add_num():
    print("add")


간단하게 add_num함수를 가지고 있으며 호출 시 add라는 문자열을 출력한다. python인터프리터를 실행시키고 다음과 같이 입력해보자.


import calc.operate.add
calc.operate.add.add_num()


결과는 아래와 같다.





위와 같은 결과를 얻을 수 있을 것이다. 이는 __init__.py라는 파일이 각 디렉토리에 존재하여 패키지로 인식되었기에 가능한 일이다. 그렇다면 add.py를 가지고 있는 operate패키지의 __init__.py를 제거하면 어떤 결과가 나오는지 아래의 화면을 확인해 보자.





위와 같이 calc모듈은 operate라는 속성을 가지고 있지 않다는 에러메시지를 출력하게 된다. 따라서 __init__.py는 패키지의 일부라는 것을 알려주는 역할을 한다는 것을 알 수 있다.




참고



점프 투 파이썬 - 박응용


'Programming > Python' 카테고리의 다른 글

[Python]오류 예외 처리  (0) 2019.03.09
[Python]if __name__ == "__main__"  (11) 2019.03.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함