วิธีการนำเข้าโมดูลที่ตั้งชื่อเป็นสตริง?
ฉันกำลังเขียนแอปพลิเคชัน Python ที่ใช้เป็นคำสั่งเป็นอาร์กิวเมนต์ตัวอย่างเช่น: $ python myapp.py command1 ฉันต้องการให้แอปพลิเคชันสามารถขยายได้นั่นคือเพื่อให้สามารถเพิ่มโมดูลใหม่ที่ใช้คำสั่งใหม่โดยไม่ต้องเปลี่ยนแหล่งแอพพลิเคชันหลัก ต้นไม้ดูเหมือนว่า: myapp/ __init__.py commands/ __init__.py command1.py command2.py foo.py bar.py ดังนั้นฉันต้องการให้แอปพลิเคชันค้นหาโมดูลคำสั่งที่มีอยู่ตอนรันไทม์และดำเนินการโมดูลที่เหมาะสม Python กำหนดฟังก์ชั่น__import__ซึ่งรับสตริงสำหรับชื่อโมดูล: __import __ (ชื่อ, globals = None, locals = None, fromlist = (), level = 0) ฟังก์ชันนำเข้าชื่อโมดูลซึ่งอาจใช้ globals และ locals ที่กำหนดเพื่อกำหนดวิธีตีความชื่อในบริบทแพ็คเกจ รายการจากให้ชื่อของวัตถุหรือ submodules ที่ควรจะนำเข้าจากโมดูลที่กำหนดโดยชื่อ ที่มา: https://docs.python.org/3/library/functions.html# นำเข้า ดังนั้นในปัจจุบันฉันมีสิ่งที่ชอบ: command = sys.argv[1] …