ฉันมีพื้นที่เก็บข้อมูลซอร์สโค้ดที่ธรรมดามาก ดังเช่นโครงสร้างต่อไปนี้:
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 การที่ต้องเปลี่ยนซอร์สโค้ดแบบนี้ในทุกสถานการณ์ที่คล้ายคลึงกันทำให้ฉันกลัว ดังนั้นฉันจึงถามว่าเป็นไปได้หรือไม่ที่จะบอกล่ามเพื่อแก้ไขเส้นทางสัมพัทธ์โดยพิจารณาจากไดเร็กทอรีการทำงานปัจจุบัน ขอบคุณ,