Bagaimana untuk Mencipta Pakej Ruang Nama untuk Pelbagai Produk Python?

Mary-Kate Olsen
Lepaskan: 2024-10-22 14:57:02
asal
663 orang telah melayarinya

How to Create Namespace Packages for Multiple Python Products?

Mentakrifkan 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.

Tinjauan Keseluruhan Masalah

Bagaimanakah kita boleh mencipta pakej ruang nama dengan berkesan yang membolehkan lebih daripada satu produk Python mentakrifkan modul dalam ruang nama itu?

TL;DR

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.

Penyelesaian Terperinci

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

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

Dengan penyelesaian ini, import berikut akan berjaya:

<code class="python">import package.foo
import package.bar
import package.baz</code>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!