ใช้ pip ติดตั้งแพ็กเกจระหว่างรันโปรแกรม และ importlib.import_module() นำเข้าโดยใช้ชื่อเป็นสตริง
ตัวอย่างฟังก์ชันติดตั้งอัตโนมัติ
import pip
import importlib
def import_with_auto_install(package):
try:
return importlib.import_module(package)
except ImportError:
pip.main(['install', package])
return importlib.import_module(package)
# ใช้งาน
if __name__ == '__main__':
scrapy = import_with_auto_install('scrapy')
print(scrapy)
ข้อควรระวัง
- ต้องมีสิทธิ์เขียนไดเรกทอรี site-packages
- อาจช้าลงจากการดาวน์โหลด/คอมไพล์ระหว่างรัน
- ใน Production ควรจัดการ Dependency ผ่าน requirements.txt ก่อน Deploy
หมายเหตุ: ตั้งแต่ pip 10+ ไม่แนะนำให้ใช้ pip.main() โดยตรง ควรใช้ subprocess เรียก CLI แทน