모듈로 자체 실행

2025. 7. 22. 13:44Programming Language/Python

반응형

파이썬 모듈 내부에 특정 코드를 작성하면 해당 모듈로 직접 코드의 실행이 가능해진다.

이는 모듈이 import될때 실행되는 것이아니라 직접 실행 될때만 코드가 실행되도록 만들어주는 진입점(entry point) 역할을 한다.

 

__name__

__name__은 파이썬이 현재 실행 중인 모듈(파일)의 이름을 담고 있는 내장 변수로 해당 변수가 작성된 파이썬 파일에서 직접 실행을 하면 값으로 "__main__"을 가지게 된다.

만약 해당 파일이 import된 상태에서 다른 외부에서 실행을 할 경우에는 "모듈명"을 값으로 가진다.

 

module.py라는 파일을 하나 만들어서 내부에 print로 __name__을 출력하도록 작성한 후에 해당 파일에서 실행해보면

__main__을 출력한다.

 

이제 이 모듈 파일을 외부에서 import하고 

실행해보면

이렇게 모듈 명이 출력된다.

 

이를 이용하는 방법으로 모듈 자체적으로 실행될때 이 값을 분기로 하여 실제 모듈자체로 실행하려고 하는 것인지, 외부에서 실행하는것인지를 분리할 수 있게 된다.

이러면 모듈에서 실행시키면

이렇게 if문 내부로 들어와 내용을 출력시키고 import 된 외부에서 실행되어 사용하면

출력되지 않는다.

 

이게 모듈 자체로 실행할때 분리된 로직을 만들어 낼 수 있는 부분이다.

 

모듈의 위치를 찾는 inspect

파이썬에서 inspect라는 라이브러리를 사용하면 가져온 모듈이 실제 어디 공간에 위치하는지를 확인할 수 있다.

먼저 inspect를 import해주고 추가로 random이라는 라이브러리를 import 해주자.

import inspect
import random

 

그리고 inspect의 getfile()메서드 내부에 random을 넣어서 print로 출력해보면

print(inspect.getfile(random))

이렇게 파일의 위치가 나온다.

나는 pyenv-win을 사용했기에 이렇게 나오지만 기본 파이썬을 쓰는 경우는 조금 다르게 나오긴 할거다.

여기서 우리가 만들었던 모듈을 동일한 방법으로 출력해보면

import inspect
import module 

print(inspect.getfile(module))

이렇게 위치해있는 곳으로 나올것이다.

 

이렇게 모듈의 위치를 파악할 수 도 있다라는 점 알고 있자.

 

 

반응형

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

패키지  (0) 2025.07.21
모듈과 __all__  (0) 2025.07.21
예외 처리  (0) 2025.07.12
클래스의 상속  (0) 2025.07.12
클래스  (0) 2025.07.12