Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Melaksanakan Import Relatif dengan Aman dalam Python?

Bagaimana untuk Melaksanakan Import Relatif dengan Aman dalam Python?

Susan Sarandon
Lepaskan: 2024-12-25 00:16:10
asal
398 orang telah melayarinya

How to Reliably Implement Relative Imports in Python?

Melaksanakan Import Relatif dalam Python

Apabila bekerja dengan struktur direktori hierarki dalam Python, adalah perlu untuk mengimport modul daripada subdirektori lain. Import relatif tradisional menggunakan ".." boleh membawa kepada ralat dalam senario tertentu. Terutamanya, apabila melaksanakan modul sebagai modul utama dengan menghantarnya sebagai hujah kepada penterjemah, import relatif gagal.

Menurut PEP 328, import relatif bergantung pada atribut nama modul kepada tentukan kedudukannya dalam hierarki pakej. Walau bagaimanapun, apabila nama ditetapkan kepada '__main__', seperti yang berlaku semasa menjalankan modul sebagai modul utama, import relatif diselesaikan seolah-olah modul itu adalah modul peringkat atas, tanpa mengira failnya lokasi sistem.

Untuk menangani isu ini, Python 2.6 memperkenalkan keupayaan untuk merujuk modul berbanding modul utama. Ini diterangkan dalam PEP 366. Dengan memanfaatkan ciri ini, adalah mungkin untuk melakukan import relatif tanpa menghadapi ralat "Percubaan import relatif dalam bukan pakej".

Contoh:

Dalam struktur direktori seperti:

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py
Salin selepas log masuk

Untuk mengimport mod2 daripada mod1, anda boleh menggunakan yang berikut sintaks:

from importlib.machinery import SourceFileLoader

mod2 = SourceFileLoader('mod2', 'sub2/mod2.py').load_module()
Salin selepas log masuk

Sebagai alternatif, jika anda tidak menjalankan modul sebagai modul utama, sintaks import relatif biasa akan berfungsi:

from ..sub2 import mod2
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Import Relatif dengan Aman dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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