Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengimport Fail dari Subdirektori dalam Python?

Bagaimana untuk Mengimport Fail dari Subdirektori dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 17:08:15503semak imbas

How to Import Files from Subdirectories in Python?

Mengimport Fail daripada Subdirektori

Mengimport fail daripada subdirektori boleh menjadi cabaran biasa apabila mengatur kod Python. Seseorang mungkin menghadapi ralat import semasa cuba mengakses fail yang berada dalam subdirektori. Artikel ini menangani isu ini dan menyediakan penyelesaian.

Senario

Pertimbangkan struktur projek di mana fail dipanggil tester.py terletak dalam direktori bernama /project. Dalam direktori /project terdapat subdirektori bernama lib, yang mengandungi fail bernama BoxTime.py. Objektifnya adalah untuk mengimport BoxTime daripada tester.py.

Percubaan Gagal

Percubaan untuk mengimport BoxTime menggunakan kod berikut mengakibatkan ralat:

import lib.BoxTime

Ini mengembalikan yang berikut traceback:

Traceback (most recent call last):
  File "./tester.py", line 3, in <module>
    import lib.BoxTime
ImportError: No module named lib.BoxTime

Penyelesaian

Penyelesaian terletak pada mencipta fail khas bernama __init__.py dalam subdirektori lib. Fail ini penting untuk Python mengenali lib sebagai pakej, membenarkan import fail dari dalam subdirektori. Setelah fail __init__.py tersedia, fail dalam subdirektori lib boleh diimport menggunakan sintaks berikut:

import lib.BoxTime

Sebagai alternatif, untuk mengelakkan merujuk BoxTime sebagai lib.BoxTime, anda boleh menggunakan sintaks berikut:

import lib.BoxTime as BT
...
BT.bt_function()

Dengan mencipta fail __init__.py dalam subdirektori, Python mengenalinya sebagai pakej, memudahkan pengimportan modul daripada subdirektori.

Atas ialah kandungan terperinci Bagaimana untuk Mengimport Fail dari Subdirektori dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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