การบอกให้ล่ามหลามใช้เส้นทางปัจจุบันในการแก้ไขไดเร็กทอรีที่เกี่ยวข้อง

ฉันมีพื้นที่เก็บข้อมูลซอร์สโค้ดที่ธรรมดามาก ดังเช่นโครงสร้างต่อไปนี้:

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

เฉพาะกรณีของฉัน test_file1.py ใช้ augmentationFile.py ซึ่งอ้างอิงไดเรกทอรี src และคำสั่ง from src import * ภายใน augmentationFile.py ประสบความสำเร็จในการค้นหาโมดูล

ฉันสามารถรันโมดูล unittest จากไดเร็กทอรี aProject หลักและ sys.path ภายใน augmentationFile.py แสดงเป็นอาร์กิวเมนต์แรก สิ่งนี้ทำให้ Python สามารถค้นหาไดเร็กทอรี src แบบสัมพันธ์ได้

อย่างไรก็ตาม เมื่อฉันเรียกใช้จากไดเร็กทอรี aProject เหมือนกัน คราวนี้ใช้ python test/augmentationFile.py, python จะตั้งค่า sys.path[0] เพื่อทดสอบโฟลเดอร์ และไม่สามารถแก้ไขคำสั่ง from src import * และบ่นได้

ฉันจะบอกล่ามหลามได้อย่างไร (ฉันอาจเข้าใจผิดว่าค้นหาแฟล็กที่เหมาะสมโดยอ่าน python 3 เอกสารบน cmdline) เพื่ออนุมานไดเรกทอรีได้อย่างถูกต้องหรือไม่ ตัวเลือกหนึ่งที่อยู่ในใจของฉันคือการเปลี่ยนคำสั่งนำเข้าของ augmentationFile.py เป็นคำสั่ง if ที่ตรวจสอบ sys.path และตัดสินใจว่าจะนำเข้าจาก ..src หรือ src การที่ต้องเปลี่ยนซอร์สโค้ดแบบนี้ในทุกสถานการณ์ที่คล้ายคลึงกันทำให้ฉันกลัว ดังนั้นฉันจึงถามว่าเป็นไปได้หรือไม่ที่จะบอกล่ามเพื่อแก้ไขเส้นทางสัมพัทธ์โดยพิจารณาจากไดเร็กทอรีการทำงานปัจจุบัน ขอบคุณ,


person b.g.    schedule 09.09.2020    source แหล่งที่มา
comment
นี่คือสิ่งที่ฉันใช้เพื่อรับไดเร็กทอรีการทำงานและดำเนินการที่เหลือต่อไป import os path = os.getcwd()   -  person Sandrin Joy    schedule 09.09.2020


คำตอบ (1)


เมื่อฉันจงใจเรียกใช้ไฟล์เป็นโมดูล มันแก้ไขได้: python -m test.augmentationFile ปัญหาเกี่ยวกับตำแหน่งข้อผิดพลาดของคำสั่ง src ซึ่งอยู่ภายในโค้ด ไม่ใช่คำสั่งนำเข้าทั่วไป

person b.g.    schedule 09.09.2020