在Python 中,命名空間包是分發相關模組的便捷方法。它們使多個 Python 產品能夠在同一命名空間中定義模組,從而允許最終用戶無縫導入它們。
從Python 3.3開始,引入了隱式命名空間套件的概念。這消除了命名空間包目錄中明確 __init__.py 檔案的需要。導入系統會自動搜尋 sys.path 中沒有 __init__.py 檔案的目錄,並將它們初始化為命名空間包。
對於3.3 之前的Python 版本,pkgutil.extend_path () 方法可用來定義明確命名空間套件:
<code class="python">from pkgutil import extend_path __path__ = extend_path(__path__, __name__)</code>
這個>此🎜>
此行將在搜尋路徑中找到的任何常規套件新增至命名空間包的同時使用常規套件和命名空間套件
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
在常規套件和命名空間套件共存的場景中,前面提到的extend_path()方法已擴展為包含隱式命名空間套件。這允許以下目錄結構:
使用extend_path()的__init__.py文件,導入package.foo,導入package.bar和導入package.baz都將如預期運作。 pkg_resources.declare_namespace()與 pkgutil.extend_path() 相比,pkg_resources.declare_namespace() 函數尚未更新為支援隱式命名空間包。因此,建議使用 pkgutil 解。以上是如何在Python中為共享模組創建命名空間包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!