Memberitahu juru bahasa python untuk mengambil jalur saat ini untuk menyelesaikan direktori relatif

Saya memiliki repositori kode sumber yang sangat biasa, seperti struktur berikut:

aProject
|-----> __init__.py
|-----> src
|       |-----> __init__.py
|       |-----> file1.py
|       |-----> file2.py
|
|-----> test
        |-----> __init__.py
        |-----> test_file1.py
        |-----> augmentationFile.py

Unik untuk kasus saya, test_file1.py menggunakan augmentationFile.py yang mereferensikan direktori src dan pernyataan from src import * di dalam augmentationFile.py berhasil menemukan modul.

Saya dapat menjalankan modul unittest dari direktori utama aProject dan sys.path di dalam augmentationFile.py ditampilkan sebagai argumen pertamanya. Ini memungkinkan python menemukan direktori src relatif.

Namun, ketika saya menjalankan dari direktori aProject, kali ini menggunakan python test/augmentationFile.py, python menyetel sys.path[0] ke folder pengujian dan tidak dapat menyelesaikan pernyataan from src import * dan mengeluh.

Bagaimana cara memberi tahu juru bahasa python (saya mungkin salah menemukan tanda yang sesuai dengan membaca python 3 dokumen di cmdline) untuk menyimpulkan direktori dengan benar? Salah satu opsi yang terlintas di benak saya adalah mengubah pernyataan import augmentationFile.py menjadi pernyataan if yang memeriksa sys.path dan memutuskan apakah akan mengimpor dari ..src atau src. Harus mengubah kode sumber seperti ini dalam setiap situasi serupa membuat saya takut. Oleh karena itu, saya bertanya apakah dan bagaimana mungkin memberi tahu penerjemah, untuk menyelesaikan jalur relatif dengan mempertimbangkan direktori kerja saat ini? Terima kasih,


person b.g.    schedule 09.09.2020    source sumber
comment
Inilah yang saya gunakan untuk mendapatkan direktori kerja & melanjutkan operasi yang tersisa import os path = os.getcwd()   -  person Sandrin Joy    schedule 09.09.2020


Jawaban (1)


Ketika saya sengaja menjalankan file sebagai modul, file tersebut diselesaikan: python -m test.augmentationFile. Masalahnya adalah tentang lokasi kesalahan pernyataan src, yang berada di dalam kode, bukan pernyataan import biasa.

person b.g.    schedule 09.09.2020