


Bagaimana Mengendalikan Import Relatif dalam Pakej Python Apabila Menjalankan Modul sebagai Skrip?
Import Relatif dalam Python 3
Apabila cuba mengimport fungsi daripada fail lain dalam direktori yang sama, menggunakan sama ada daripada .mymodule import myfunction atau dari mymodule import myfunction boleh mengakibatkan kesilapan. Sebabnya terletak pada sama ada modul yang mengandungi fungsi yang diimport berada di dalam pakej atau tidak.
Menggunakan Import Relatif
Import relatif berfungsi apabila modul berada di dalam pakej. Untuk mencipta pakej, fail __init__.py mesti ada dalam direktori yang mengandungi modul. Walau bagaimanapun, adalah penting juga untuk memastikan modul boleh dijalankan sebagai skrip kadangkala.
Struktur Kod
Susun letak biasa untuk pakej yang mengandungi berbilang modul dan skrip utama adalah sebagai berikut:
- main.py
-
mypackage/
- __init__. py
- mymodule.py
- myothermodule.py
Dalam mymodule.py:
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()
Dalam myothermodule.py:
# Import exported function from the mymodule from .mymodule import as_int # Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
Dalam main.py:
# Import exported function from myothermodule from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()
Menjalankan Kod
Apabila menjalankan main.py atau mypackage/mymodule.py, kod tersebut dilaksanakan tanpa masalah. Walau bagaimanapun, percubaan untuk menjalankan mypackage/myothermodule.py mengakibatkan ralat yang berkaitan dengan import relatif yang digunakan (daripada .mymodule import as_int).
Pendekatan Alternatif
Terdapat dua pendekatan alternatif untuk menangani perkara ini :
- Gunakan Import Mutlak: Gantikan relatif import dengan import mutlak dengan menyatakan laluan modul penuh: dari mypackage.mymodule import as_int. Walau bagaimanapun, ini memerlukan direktori induk pakej ditambahkan pada PYTHONPATH.
- Gunakan Pilihan -m: Untuk mengelak daripada menggunakan import mutlak sambil memastikan modul berjalan dengan betul, gunakan - m pilihan dengan Python: python3 -m mypackage.myothermodule. Pendekatan ini memerlukan menjalankan arahan daripada direktori induk pakej.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Import Relatif dalam Pakej Python Apabila Menjalankan Modul sebagai Skrip?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?

Cara Bekerja Dengan Dokumen PDF Menggunakan Python

Cara Cache Menggunakan Redis dalam Aplikasi Django

Memperkenalkan Toolkit Bahasa Alam (NLTK)

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?
