Python에서 네임스페이스 패키지는 관련 모듈을 배포하기 위한 편리한 접근 방식입니다. 이를 통해 여러 Python 제품이 동일한 네임스페이스 내에서 모듈을 정의할 수 있으므로 최종 사용자가 해당 모듈을 원활하게 가져올 수 있습니다.
Python 3.3부터 암시적 네임스페이스 패키지 개념이 도입되었습니다. 이렇게 하면 네임스페이스 패키지 디렉터리 내에 명시적인 __init__.py 파일이 필요하지 않습니다. 가져오기 시스템은 __init__.py 파일이 없는 디렉터리에 대해 sys.path를 자동으로 검색하고 이를 네임스페이스 패키지로 초기화합니다.
Python 3.3 이전 버전의 경우 pkgutil.extend_path () 메소드를 사용하여 명시적 네임스페이스 패키지를 정의할 수 있습니다.
<code class="python">from pkgutil import extend_path __path__ = extend_path(__path__, __name__)</code>
이 줄은 검색 경로에서 찾은 모든 일반 패키지를 네임스페이스 패키지의 path 속성에 추가합니다.
일반 패키지와 네임스페이스 패키지가 모두 공존하는 시나리오에서는 앞서 언급한 extend_path() 메서드가 암시적 네임스페이스 패키지를 포함하도록 확장되었습니다. 이를 통해 다음과 같은 디렉터리 구조가 가능합니다.
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
extend_path()를 사용하는 __init__.py 파일을 사용하면 import package.foo, import package.bar 및 import package.baz가 모두 예상대로 작동합니다.
pkgutil.extend_path()와 달리 pkg_resources.declare_namespace() 함수는 암시적 네임스페이스 패키지를 지원하도록 업데이트되지 않았습니다. 따라서 pkgutil 솔루션을 사용하는 것이 좋습니다.
위 내용은 Python에서 공유 모듈용 네임스페이스 패키지를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!