Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencipta Pakej Ruang Nama untuk Pelbagai Produk Python?
Dalam Python, pakej ruang nama membolehkan pengedaran perpustakaan berkaitan dalam muat turun berasingan. Ini membolehkan berbilang produk Python mentakrifkan modul dalam ruang nama yang sama.
Bagaimanakah kita boleh mencipta pakej ruang nama dengan berkesan yang membolehkan lebih daripada satu produk Python mentakrifkan modul dalam ruang nama itu?
Dalam Python 3.3 dan ke atas, pakej ruang nama tersirat mengurangkan keperluan untuk sebarang langkah khas. Dalam versi terdahulu, menggunakan penyelesaian pkgutil.extend_path() disyorkan berbanding pkg_resources.declare_namespace() kerana keserasiannya dengan pakej ruang nama tersirat.
Sebelum Python 3.3, pkg_resources Fungsi .declare_namespace() telah digunakan untuk mencipta pakej ruang nama. Walau bagaimanapun, dengan pengenalan pakej ruang nama tersirat dalam Python 3.3, kaedah pkgutil.extend_path() telah menjadi pendekatan pilihan. Pendekatan ini juga boleh mengendalikan kedua-dua pakej ruang nama tersirat dan eksplisit, menjadikannya kalis masa hadapan.
Kaedah extend_path() mengubah suai atribut __path__ bagi pakej biasa sedia ada untuk memasukkan laluan tambahan. Dengan cara ini, modul daripada pakej ruang nama yang berbeza boleh diimport di bawah ruang nama yang sama.
Sebagai contoh, pertimbangkan struktur direktori berikut:
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
Untuk menjadikan direktori ini boleh diakses sebagai sebahagian daripada pakej ruang nama, kod berikut boleh ditambah pada fail __init__.py bagi pakej biasa dalam laluan1 dan laluan3:
<code class="python">from pkgutil import extend_path __path__ = extend_path(__path__, __name__)</code>
Dengan penyelesaian ini, import berikut akan berjaya:
<code class="python">import package.foo import package.bar import package.baz</code>
Menggunakan kaedah pkgutil.extend_path() membenarkan pakej ruang nama dibuat dan diurus dengan berkesan, membolehkan berbilang produk Python menggunakan kod dalam ruang nama yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pakej Ruang Nama untuk Pelbagai Produk Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!