2009-09-07 6 views
17

질문은 오히려 간단하지만 검색으로 대답하지 않습니다. 파이썬 스크립트에서이 스크립트를 모듈로 가져 오거나 스크립트로 실행할지 여부를 어떻게 결정합니까? 파이썬에서 전혀 차이가 있습니까?파이썬 스크립트를 모듈로 가져 오거나 스크립트로 실행할지 어떻게 결정합니까?

문제는 스크립트로 실행하는 경우에만 명령 줄 매개 변수를 평가하지만 모듈을 다른 스크립트에서 사용하려면 가져온 경우가 아니라는 점입니다. (나는 라이브러리와 프로그램으로 하나의 스크립트를 사용할 수 있기를 바란다.) 바닐라 방식은 lib와 그것을 사용하는 두 번째 스크립트를 빌드하는 것이지만 두 번째 옵션은 작은 도구를 갖고 싶다./libs. 파이썬 docs에서

답변

29

:

당신이

파이썬 fibo.py

모듈의 코드가 이 실행됩니다

와 파이썬 모듈을 실행하면, 당신이 그것을 가져 것처럼, 이지만 __name__"__main__"으로 설정합니다. 명령 줄을 구문 분석하는 코드 만 실행되기 때문에

if __name__ == '__main__': 
    # Running as a script 

하면, 스크립트뿐만 아니라 가져올 수 모듈로 사용할 수있는 파일을 만들 수 있습니다 : 그것은 당신의 모듈의 끝에서 이 코드를 추가하여 있음을 의미 모듈이 "주"파일로 실행되는 경우

+3

이것은 다소 마술적인 것처럼 보이지만 실제로는 완전히 표준적인 관용어입니다. 'python -m somemodule'에 의해 호출 된 모듈이라면 \ _ \ _ main \ _ \ _이 될 것입니다. – bobince

관련 문제