Import Relatif dalam Python 3: Membongkar Misteri
Import relatif menyediakan cara yang mudah untuk mengimport modul dari dalam direktori yang sama. Walau bagaimanapun, dalam kes tertentu, ia mungkin membawa kepada ralat berikut:
Untuk memahami ralat ini, mari analisa struktur direktori biasa:
main.py mypackage/ __init__.py mymodule.py myothermodule.py
Dalam kes ini, import relatif "daripada .mymodule import myfunction" dalam "myothermodule.py" akan gagal kerana "mymodule.py" tidak kelihatan dalam laluan carian modul. Ini disebabkan oleh mekanisme resolusi modul Python, yang bergantung pada pembolehubah sys.path.
Satu penyelesaian ialah menggunakan import mutlak dan bukannya import relatif:
from mypackage.mymodule import myfunction
Ini memastikan bahawa Python mencari "mymodule" dalam laluan modul "mypackage", yang diandaikan berada dalam sys.path.
Walau bagaimanapun, jika anda ingin mengekalkan kemudahan import relatif sambil membenarkan modul dijalankan sebagai skrip, pertimbangkan perkara berikut:
import sys import os SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(SCRIPT_DIR)) from mypackage.mymodule import myfunction
python3 -m mypackage.myothermodule
Ini pendekatan membolehkan modul ditemui dalam sistem modul Python dan bukannya dalam sistem fail.
Kesimpulannya, mesej ralat yang ditemui dalam import relatif berpunca daripada mekanisme resolusi modul Python. Dengan memahami peranan sys.path dan menggunakan strategi yang berbeza, anda boleh menyelesaikan ralat ini dan memastikan import lancar dalam aplikasi Python anda.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'ImportError' Apabila Menggunakan Import Relatif dalam Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!