프로젝트 간 모듈 공유를 위한 네임스페이스 패키지 정의
Python에서 네임스페이스 패키지는 여러 프로젝트에 걸쳐 관련 코드를 구조화하는 수단을 제공합니다. 네임스페이스 패키지를 정의하려면 네임스페이스 패키지 디렉터리 내에 __init__.py 파일을 배치하지 않는 것이 중요합니다.
네임스페이스 패키지의 진화
Python 3.3 이전에는 네임스페이스 패키지가 필요했습니다. pkgutil.extend_path() 또는 pkg_resources.declare_namespace()를 사용하여 명시적으로 선언합니다. 그러나 Python 3.3 이상에서는 암시적 네임스페이스 패키지가 도입되어 선언 없이도 원활한 생성이 가능해졌습니다.
일반 패키지와의 상호 작용
네임스페이스 패키지는 일반 패키지와 공존할 수 있습니다. , 계층 구조를 허용합니다. 네임스페이스 패키지 내에서 모듈을 가져올 때 Python은 상위 패키지의 path 내에서 검색하여 표준 sys.path 이상으로 검색을 확장합니다.
pkgutil.extend_path() 대 pkg_resources.declare_namespace()
pkgutil.extend_path() 및 pkg_resources.declare_namespace()는 이전에 네임스페이스 패키지를 정의하는 데 사용되었지만 암시적 네임스페이스 패키지와의 미래 호환성을 위해 전자를 사용하는 것이 좋습니다. .
구조 예
다음 디렉터리 구조를 고려하세요.
Package-1/namespace/ Package-2/namespace/ ├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
__init__.py 파일에 필요한 확장_경로 선언을 사용하여 다음과 같은 항목을 가져옵니다. 네임스페이스.foo, 네임스페이스.bar 및 네임스페이스.baz는 모두 성공합니다.
위 내용은 Python에서 프로젝트 간 모듈 공유를 위한 네임스페이스 패키지를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!