定義跨專案模組共享的命名空間套件
在Python 中,命名空間套件提供了一種跨多個專案建置相關程式碼的方法。若要定義命名空間包,必須避免將 __init__.py 檔案放置在命名空間包目錄中。
命名空間包的演變
在 Python 3.3 之前,需要命名空間包使用 pkgutil.extend_path() 或 pkg_resources.declare_namespace() 明確宣告。然而,從 Python 3.3 開始,引入了隱式命名空間包,無需任何聲明即可無縫創建。
與常規包的交互
命名空間包可以與常規包共存,允許分層結構。當在命名空間包中導入模組時,Python 會在父包的 path 內進行搜索,將搜索擴展到標準 sys.path 之外。
pkgutil.extend_path() with. pkg_resources.declare_namespace()
雖然pkgutil.extend_path() 和pkg_resources.declare_name(space) ,但建議使用前者,因為它與隱式命名空間包相容。 .
範例結構
考慮以下目錄結構:
Package-1/namespace/ Package-2/namespace/ ├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
在__init__.py 檔案中使用必要的擴充路徑聲明,導入這樣的因為namespace.foo、namespace.bar 和namespace.baz 都會成功。
以上是如何在Python中定義跨專案模組共享的命名空間包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!