Dalam Python, pakej ruang nama ialah pendekatan yang mudah untuk mengedarkan modul berkaitan. Ia membolehkan berbilang produk Python untuk mentakrifkan modul dalam ruang nama yang sama, dengan itu membolehkan pengguna akhir mengimportnya dengan lancar.
Bermula dengan Python 3.3, konsep pakej ruang nama tersirat telah diperkenalkan. Ini menghapuskan keperluan untuk fail __init__.py eksplisit dalam direktori pakej ruang nama. Sistem pengimportan secara automatik mencari sys.path untuk direktori tanpa fail __init__.py dan memulakannya sebagai pakej ruang nama.
Untuk versi Python sebelum 3.3, pkgutil.extend_path () kaedah boleh digunakan untuk mentakrifkan pakej ruang nama eksplisit:
<code class="python">from pkgutil import extend_path __path__ = extend_path(__path__, __name__)</code>
Barisan ini menambah sebarang pakej biasa yang terdapat dalam laluan carian ke atribut path bagi pakej ruang nama.
Dalam senario di mana kedua-dua pakej biasa dan ruang nama wujud bersama, kaedah extend_path() yang dinyatakan sebelum ini telah diperluaskan untuk memasukkan pakej ruang nama tersirat. Ini membenarkan struktur direktori berikut:
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
Dengan fail __init__.py yang menggunakan extend_path(), import package.foo, import package.bar dan import package.baz semuanya akan berfungsi seperti yang diharapkan.
Berbeza dengan pkgutil.extend_path(), fungsi pkg_resources.declare_namespace() belum dikemas kini untuk menyokong pakej ruang nama tersirat. Oleh itu, adalah dinasihatkan untuk menggunakan penyelesaian pkgutil.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Pakej Ruang Nama dalam Python untuk Modul Dikongsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!