__main__.py은 (는) 무엇 이죠?
__main__.py
파일 은 무엇이며 어떤 종류의 코드를 넣어야하며 언제 사용해야합니까?
종종 파이썬 프로그램은 명령 행에서 .py 파일의 이름을 지정하여 실행됩니다.
$ python my_program.py
코드로 가득 찬 디렉토리 또는 zip 파일을 작성하고을 포함 할 수도 있습니다 __main__.py
. 그런 다음 명령 행에서 디렉토리 또는 zip 파일의 이름을 지정하면 __main__.py
자동으로 실행 됩니다.
$ python my_program_dir
$ python my_program.zip
# Or, if the program is accessible as a module
$ python -m my_program
애플리케이션을 이와 같이 실행하면 이점을 얻을 수 있는지 스스로 결정해야합니다.
• 그래도 참고 __main__
모듈은 보통에서 오지 않는 __main__.py
파일입니다. 가능하지만 보통은 그렇지 않습니다. 과 같은 python my_program.py
스크립트를 실행하면 스크립트가 __main__
모듈 대신 모듈 로 실행됩니다 my_program
. 이는 모듈이로 실행 python -m my_module
되거나 여러 가지 다른 방식으로 실행되는 경우에도 발생합니다 .
__main__
오류 메시지에서 이름을 본다고해서 반드시 __main__.py
파일을 찾아야하는 것은 아닙니다 .
__main__.py
파일 은 무엇입니까 ?
파이썬 모듈을 만들 main
때, 프로그램의 진입 점으로 실행될 때 모듈이 일부 기능 (보통 함수에 포함되어 있음 )을 실행하게하는 것이 일반적 입니다. 이것은 일반적으로 대부분의 Python 파일의 맨 아래에있는 다음과 같은 일반적인 관용구로 수행됩니다.
if __name__ == '__main__':
# execute only if run as the entry point into the program
main()
를 사용하여 Python 패키지에 대해 동일한 의미를 얻을 수 있습니다 __main__.py
. 이것은 리눅스 쉘 프롬프트 $
입니다. Windows에 Bash (또는 다른 Posix 쉘)가 없으면 s demo/__<init/main>__.py
사이에 내용으로 다음 파일을 만드십시오 EOF
.
$ mkdir demo
$ cat > demo/__init__.py << EOF
print('demo/__init__.py executed')
def main():
print('main executed')
EOF
$ cat > demo/__main__.py << EOF
print('demo/__main__.py executed')
from __init__ import main
main()
EOF
(Posix / Bash 쉘에서 각 cat 명령의 끝에 파일 끝 문자 + 를 입력 하여 << EOF
s 및 끝 EOF
s 없이 위의 작업을 수행 할 수 있습니다 )CtrlD
그리고 지금:
$ python demo
demo/__main__.py executed
demo/__init__.py executed
main executed
이를 문서에서 파생시킬 수 있습니다. 문서는 말합니다 :
__main__
— 최상위 스크립트 환경
'__main__'
최상위 코드가 실행되는 범위의 이름입니다. 모듈 은 표준 입력, 스크립트 또는 대화식 프롬프트에서 읽을 때와__name__
동일하게 설정'__main__'
됩니다.모듈은 자체 검사를 통해 메인 스코프에서 실행 중인지 여부를 감지 할 수 있습니다
__name__
. 이는 모듈이 스크립트로 실행될 때 또는python -m
가져올 때가 아닌 모듈에서 조건부로 코드를 실행하는 일반적인 관용구를 허용합니다 .if __name__ == '__main__': # execute only if run as a script main()
패키지의 경우
__main__.py
모듈 을 포함 시켜서 동일한 효과를 얻을 수 있습니다. 모듈을 실행하면 내용이 실행됩니다-m
.
압축
이 파일을 단일 파일로 패키징하여 다음과 같이 명령 줄에서 실행할 수도 있습니다. 그러나 압축 패키지는 하위 패키지 또는 하위 모듈을 진입 점으로 실행할 수 없습니다.
$ python -m zipfile -c demo.zip demo/*
$ python demo.zip
demo/__main__.py executed
demo/__init__.py executed
main() executed
__main__.py
zip 파일의 파이썬 프로그램에 사용됩니다. __main__.py
zip 파일을 실행하면 파일이 실행됩니다. 예를 들어, zip 파일이 다음과 같은 경우 :
test.zip
__main__.py
그리고 내용 __main__.py
은
import sys
print "hello %s" % sys.argv[1]
그럼 우리가 도망 python test.zip world
가면 hello world
나갈거야
따라서 __main__.py
zip 파일에서 Python을 호출 하면 파일이 실행됩니다.
만들 __main__.py
에 yourpackage
로가 실행 만드는 :
$ python -m yourpackage
스크립트가 단일 파이썬 파일이 아닌 디렉토리 또는 ZIP 파일 인 __main__.py
경우 "스크립트"가 파이썬 인터프리터에 인수로 전달 될 때 실행됩니다.
참고 URL : https://stackoverflow.com/questions/4042905/what-is-main-py
'IT' 카테고리의 다른 글
Java에서 String을 InputStreamReader로 바꾸는 방법은 무엇입니까? (0) | 2020.03.24 |
---|---|
jQuery 지연을 어떻게 사용할 수 있습니까? (0) | 2020.03.24 |
HTML5 WebSocket API를 지원하는 브라우저는 무엇입니까? (0) | 2020.03.24 |
JavaScript의 구문 분석 8 진 동작을 어떻게 해결합니까? (0) | 2020.03.24 |
sudo가 PATH를 변경하는 이유는 무엇입니까? (0) | 2020.03.24 |