Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengimport dari Pakej Adik Beradik Tanpa Menggunakan Hacks `sys.path`?

Bagaimana untuk Mengimport dari Pakej Adik Beradik Tanpa Menggunakan Hacks `sys.path`?

Linda Hamilton
Linda Hamiltonasal
2024-12-08 15:56:13282semak imbas

How to Import from Sibling Packages Without Using `sys.path` Hacks?

Import Pakej Adik Beradik: Penyelesaian untuk Mengelak Peretasan sys.path

Mengimport daripada pakej adik beradik boleh menimbulkan cabaran semasa mengatur pangkalan kod anda. Walaupun sys.path.append hacks menawarkan penyelesaian, terdapat penyelesaian yang lebih elegan yang menghapuskan keperluan untuk sisipan mengganggu ini.

Langkah:

  1. Buat pyproject.toml Fail:
    Tentukan metadata dan kebergantungan pakej anda dalam pyproject.toml fail.
  2. Gunakan Persekitaran Maya:
    Asingkan projek anda daripada kebergantungan sistem dengan mencipta persekitaran maya.
  3. Pasang Projek Anda dalam Keadaan Boleh Sunting:
    Gunakan pip dan bendera -e untuk memasang pakej anda dalam keadaan boleh diedit, memastikan perubahan dilakukan secara automatik dicerminkan.
  4. Ubah suai Import:
    Prepend myproject. kepada import yang gagal sebelum ini, cth., daripada myproject.api import function_name.

Contoh:

Pertimbangkan fail berikut struktur:

  • api/api.py
  • example/example_one.py
  • ujian/ujian _one.py
  • pyproject.toml

api.py:

def function_from_api():
    return 'I am the return value from api.api!'

test_one.py:

from myproject.api.api import function_from_api

def test_function():
    print(function_from_api())

if __name__ == '__main__':
    test_function()

Kepada jalankan test_one.py, pastikan myproject dipasang dalam keadaan boleh diedit. Kemudian, laksanakan:

python myproject/tests/test_one.py

Anda seharusnya melihat output: "Saya adalah nilai pulangan daripada api.api!".

Kesimpulan:

Kaedah ini membolehkan anda untuk mengimport daripada pakej adik beradik tanpa menggunakan penyelesaian godam seperti sys.path.append. Dengan memanfaatkan pyproject.toml dan pemasangan boleh diedit, anda boleh mengekalkan pangkalan kod yang bersih dan modular sambil memudahkan pelanjutan dan ujian yang mudah.

Atas ialah kandungan terperinci Bagaimana untuk Mengimport dari Pakej Adik Beradik Tanpa Menggunakan Hacks `sys.path`?. 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