如何在Python中定義跨專案模組共享的命名空間包?

DDD
發布: 2024-10-22 14:34:03
原創
826 人瀏覽過

How to Define Namespace Packages for Cross-Project Module Sharing in Python?

定義跨專案模組共享的命名空間套件

在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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!