Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membuat Pakej Ruang Nama dalam Python untuk Modul Dikongsi?

Bagaimana untuk Membuat Pakej Ruang Nama dalam Python untuk Modul Dikongsi?

Linda Hamilton
Linda Hamiltonasal
2024-10-22 14:55:03657semak imbas

How to Create Namespace Packages in Python for Shared Modules?

Mencipta Pakej Ruang Nama dalam Python untuk Pengedaran Modul Dikongsi

Pengenalan

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.

Melaksanakan Pakej Ruang Nama

Pakej Ruang Nama Tersirat dalam Python 3.3

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.

Penyelesaian Pra-Python 3.3

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.

Menggunakan Pakej Biasa dan Ruang Nama Bersama

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.

pkg_resources.declare_namespace()

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn