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

Linda Hamilton
Lepaskan: 2024-10-22 14:55:03
asal
655 orang telah melayarinya

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>
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan