มีวิธีที่ตรงไปตรงมาในการแสดงชื่อโมดูลทั้งหมดในแพ็คเกจโดยไม่ต้องใช้__all__
หรือไม่?
ตัวอย่างเช่นให้แพ็คเกจนี้:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
ฉันสงสัยว่ามีวิธีมาตรฐานหรือในตัวในการทำสิ่งนี้:
>>> package_contents("testpkg")
['modulea', 'moduleb']
วิธีการด้วยตนเองคือการวนซ้ำผ่านเส้นทางการค้นหาโมดูลเพื่อค้นหาไดเร็กทอรีของแพ็คเกจ จากนั้นเราสามารถแสดงรายการไฟล์ทั้งหมดในไดเร็กทอรีนั้นกรองไฟล์ py / pyc / pyo ที่ไม่ซ้ำกันออกจากนั้นดึงส่วนขยายและส่งคืนรายการนั้น แต่ดูเหมือนจะเป็นงานที่พอใช้สำหรับบางสิ่งที่กลไกการนำเข้าโมดูลกำลังดำเนินการภายในอยู่แล้ว ฟังก์ชั่นนั้นถูกเปิดเผยทุกที่หรือไม่?