ฉันมีไดเรกทอรีที่เต็มไปด้วยสคริปต์ (สมมติว่าproject/bin
) ฉันยังมีไลบรารีอยู่project/lib
และต้องการให้สคริปต์โหลดโดยอัตโนมัติ นี่คือสิ่งที่ฉันใช้ตามปกติที่ด้านบนของแต่ละสคริปต์:
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
มันยุ่งยากน่าเกลียดและต้องวางที่จุดเริ่มต้นของทุกไฟล์ มีวิธีที่ดีกว่านี้หรือไม่?
สิ่งที่ฉันหวังไว้จริงๆคือสิ่งที่ราบรื่นเช่นนี้:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
หรือที่ดีกว่านั้นคือสิ่งที่จะไม่พังเมื่อผู้แก้ไขของฉัน (หรือบุคคลอื่นที่มีสิทธิ์เข้าถึง) ตัดสินใจที่จะจัดลำดับการนำเข้าใหม่โดยเป็นส่วนหนึ่งของกระบวนการล้างข้อมูล:
#!/usr/bin/python --relpath_append ../lib
import mylib
นั่นจะไม่พอร์ตโดยตรงไปยังแพลตฟอร์มที่ไม่ใช่ posix แต่จะทำให้ทุกอย่างสะอาด