>백엔드 개발 >파이썬 튜토리얼 >Python\의 `-m` 스위치의 목적은 무엇입니까?

Python\의 `-m` 스위치의 목적은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-27 05:23:10800검색

What is the purpose of Python's `-m` switch?

Python의 -m 스위치의 목적 공개

배경: Python 모듈 구성

조직의 기본 단위인 Python 모듈은 두 가지 형태로 제공됩니다. 코드 모듈과 패키지 모듈. 코드 모듈은 실행 가능한 Python 코드로 구성되는 반면, 패키지 모듈은 다른 모듈이 포함된 디렉터리를 포함합니다.

Python은 모듈 이름과 파일 이름으로 알려진 고유 식별자를 모듈에 할당합니다. 일반적으로 모듈은 Python 코드의 모듈 이름과 명령줄의 파일 이름으로 식별됩니다. Python은 sys.path 변수를 사용하여 모듈 이름을 파일 이름으로 원활하게 변환합니다.

-m 공개

Python 2.4.1에 도입된 -m 스위치는 원래 명령에서 모듈 실행을 활성화했습니다. 모듈 이름을 기반으로 한 줄입니다. 이는 파일 이름 지정에 대한 대안을 제공했습니다. 초기 반복에서 -m은 최상위 모듈 이름만 지원했습니다.

PEP 338 확장 -m은 더 복잡한 모듈 이름 표현을 처리하여 http.server와 같은 중첩 모듈의 실행을 허용합니다. 또한 모든 상위 패키지 __init__.py 파일의 평가를 의무화했습니다.

최종 주요 발전은 PEP 366에서 이루어졌으며, -m은 절대 가져오기뿐만 아니라 명시적 상대 가져오기도 지원할 수 있는 기능을 부여했습니다. 이는 package 변수를 주어진 모듈 이름의 상위 모듈로 설정하여 달성되었습니다.

-m의 실제 응용

  • 알 수 없는 모듈 실행 파일 이름: 많은 Python 사용자가 모듈 이름에 익숙하지만 반드시 파일 이름일 필요는 없으므로 -m은 실행에 매우 중요합니다. 명령줄의 모듈. 예를 들어 python -m http.server를 사용하면 http.server 모듈 실행이 단순화됩니다.
  • 설치 없이 로컬 패키지 실행: 기본적으로 -m은 현재 작업 디렉터리를 sys에 추가합니다. 절대 또는 상대 가져오기를 포함하는 로컬 패키지의 실행을 가능하게 하는 경로입니다. 이 동작을 사용하면 개발 목적으로 패키지를 설치할 필요가 없습니다.

-m의 제한 사항

기능에도 불구하고 -m은 Python으로 작성된 모듈만 실행할 수 있다는 점에서 제한됩니다. (.py 파일). C 컴파일 코드 모듈은 지원되지 않습니다.

비교 분석

Import 문을 통한 모듈 실행:

  • sys.path 수정 없음
  • 이름을 절대값으로 설정 modulename
  • package는 직계 부모 패키지로 설정됩니다
  • __init__.py는 모든 패키지에 대해 평가됩니다
  • __main__.py는 코드 모듈에 대해 평가됩니다

명령줄을 통한 모듈 실행 파일 이름:

  • 모듈 디렉터리를 포함하도록 수정된 sys.path
  • name을 '__main__'으로 설정
  • package를 None으로 설정
  • __init__.py는 어떤 경우에도 평가되지 않습니다. packages
  • __main__.py는 패키지와 코드 모듈 모두에 대해 평가됩니다

모듈 이름(-m)이 포함된 명령줄을 통한 모듈 실행:

  • 현재를 포함하도록 sys.path가 수정되었습니다. 디렉토리
  • name을 '__main__'으로 설정
  • package를 직계 상위 패키지로 설정
  • __init__.py 모든 항목에 대해 평가 packages
  • __main__.py는 패키지와 코드 모두에 대해 평가됩니다. 모듈

결론

-m 스위치는 명령줄에서 Python 모듈을 실행하기 위한 강력한 도구 역할을 합니다. 모듈 이름을 파일 이름으로 변환하고, 로컬 패키지를 실행하고, 상대 가져오기를 지원하는 기능은 Python 코드를 관리하는 편리하고 다양한 수단을 제공합니다. Python 기반 모듈 실행에 대한 제한에도 불구하고 -m은 여전히 ​​Python 개발자에게 귀중한 자산입니다.

위 내용은 Python\의 `-m` 스위치의 목적은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.