Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 모듈 찾기 및 실행(runpy)

<시간/>

명령줄 옵션의 -m 옵션은 주어진 모듈을 검색하여 __main__ 모듈로 실행합니다. 이 메커니즘은 파일 시스템이 아닌 Python 모듈 네임스페이스를 사용하여 스크립트를 찾을 수 있도록 하는 Python 표준 모듈의 runpy 모듈에서 내부적으로 지원됩니다.

이 모듈은 두 가지 기능을 정의합니다.

run_module()

이 함수는 지정된 모듈의 코드를 실행하고 결과 모듈 전역 사전을 반환합니다.

mod_name 인수는 절대 모듈 이름이어야 합니다. 모듈 이름이 일반 모듈이 아닌 패키지를 참조하는 경우 해당 패키지를 가져오고 해당 패키지 내의 __main__ 하위 모듈이 실행되고 결과 모듈 전역 사전이 반환됩니다.

특수 전역 변수 __name__, __spec__, __file__, __cached__, __loader__ 및 __package__는 모듈 코드가 실행되기 전에 전역 사전에 설정됩니다.

__name__은 명명된 모듈이 패키지이면 mod_name + '.__main__'으로 설정되고 그렇지 않으면 mod_name 인수로 설정됩니다.

__file__, __cached__, __loader__ 및 __package__는 모듈 사양에 따라 정상으로 설정됩니다.

run_path()

이 함수는 주어진 경로에서 파일의 코드를 실행하고 결과 모듈 전역 사전을 반환합니다. 제공된 경로는 Python 소스 파일, 컴파일된 바이트 코드 파일 또는 __main__ 모듈이 포함된 유효한 sys.path 항목(예:최상위 __main__.py 파일이 포함된 zip 파일)을 참조할 수 있습니다.

특수 전역 변수 __name__, __spec__, __file__, __cached__, __loader__ 및 __package__는 모듈 코드가 실행되기 전에 전역 사전에 설정됩니다.

이 선택적 인수가 None이 아니면 __name__이 run_name으로 설정되고 그렇지 않으면 ''로 설정됩니다.

예시

다음 스크립트를 runpyeample.py로 저장

#runpy exampledef add(x,y):return x+ydef main():x,y =10,20 print (add(x,y)) returnif __name__=='__main__':main() 

위의 예제를 실행하는 일반적인 프로세스는 다음과 같습니다.

>>> runpyexample을 rp로 가져오기>>> rp.main()30>>>

그러나 이제 실제로 import하지 않고 runpy 모듈을 사용하여 실행합니다.

>>> runpy 가져오기>>> runpy.run_module('runpyexample', run_name='__main__')30

run_path() 함수를 사용할 수도 있습니다.

>>> runpy.run_path('runpyexample.py', run_name='__main__')30

앞서 말했듯이 runpy는 Python 명령줄의 –m 스위치를 지원합니다.

E:\python37>python -m runpyexample30