Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Membetulkan 'ImportError: Tiada Modul Dinamakan...' Ralat Semasa Menggunakan pytest dengan Struktur Projek Hierarki?

Bagaimanakah Saya Boleh Membetulkan 'ImportError: Tiada Modul Dinamakan...' Ralat Semasa Menggunakan pytest dengan Struktur Projek Hierarki?

DDD
Lepaskan: 2024-12-01 09:31:14
asal
860 orang telah melayarinya

How Can I Fix

Menyelesaikan Isu PATH untuk pytest dengan Ralat Import Modul

Apabila menggunakan pytest untuk menjalankan ujian pada projek dengan struktur fail hierarki, anda boleh hadapi ralat "ImportError: Tiada modul bernama ..." semasa mengimport modul daripada laluan aplikasi anda. Isu ini timbul daripada keperluan untuk mengubah suai sys.path untuk memasukkan laluan ke modul yang diperlukan.

Pendekatan Disyorkan untuk pytest >= 7: Tetapan pythonpath

versi pytest 7 dan seterusnya menawarkan penyelesaian yang dipermudahkan menggunakan nilai konfigurasi pythonpath. Ini membolehkan anda menambah laluan khusus kepada sys.path tanpa memerlukan penyelesaian. Dalam fail konfigurasi anda (pyproject.toml atau pytest.ini), anda boleh menentukan laluan yang anda ingin sertakan, seperti:

[tool.pytest.ini_options]
pythonpath = [
  "."
]
Salin selepas log masuk
[pytest]
pythonpath = .
Salin selepas log masuk

Jawapan Asal untuk pytest < 7: Penyelesaian conftest

Jika anda menggunakan versi pytest yang lebih lama (kurang daripada 7), anda boleh menggunakan penyelesaian conftest.py kosong. Ini melibatkan mencipta fail conftest.py kosong dalam direktori akar projek. Ini mencetuskan pytest untuk menambah direktori induk fail conftest.py secara automatik ke sys.path, menyelesaikan isu import.

Penjelasan

Pytest mengimbas modul conftest semasa koleksi ujian untuk mengumpulkan cangkuk dan lekapan tersuai. Untuk mengimport objek tersuai daripada modul ini, pytest menambah direktori induk conftest.py ke sys.path.

Penyelesaian Alternatif

Penyelesaian tambahan untuk isu ini wujud, bergantung pada struktur projek anda:

  • Akar Pakej Direktori: Letakkan fail conftest.py dalam direktori akar pakej, yang mengandungi subpakej tetapi bukan pakej itu sendiri (tanpa fail __init__.py).
  • Reka Letak src: Walaupun boleh digunakan dengan susun atur src, meletakkan conftest.py dalam direktori src mungkin menafikan faedah susun atur src. Sebaliknya, pertimbangkan untuk meletakkannya dalam direktori akar pakej.

Kesimpulan

Dengan melaraskan sys.path atau menggunakan penyelesaian conftest.py, anda boleh menyelesaikan "ImportError: Tiada modul bernama ..." ralat dan memastikan pelaksanaan ujian berjaya dalam persekitaran pytest anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membetulkan 'ImportError: Tiada Modul Dinamakan...' Ralat Semasa Menggunakan pytest dengan Struktur Projek Hierarki?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan