只是因為程式目錄下有好幾個 module ,想檢查裏面是否有指定名稱的子 module,有的話就載入,沒有的話就跳過。
在網路上找了一下,說是用 imp 就可以解決了:
- How to check if a python module exists without importing it - Stack Overflow
- django - How to check if python module exists and can be imported - Stack Overflow
# -*- coding: utf-8 -*- # 依序去 module1, module2, module3, module4 看有沒有 routing,有的話就載入並取出指定的變數。 import imp channel_routing = [] apps = ['module1', 'module2', 'module3', 'module4'] for app in apps: try: app_info = imp.find_module(app) module = imp.load_module(app, *app_info) routing_info = imp.find_module('routing', module.__path__) routing = imp.load_module('routing', *routing_info) if hasattr(routing, 'channel_routing'): channel_routing.extend(getattr(routing, 'channel_routing')) except ImportError: pass其實應該再參考 django autodiscover() 或是 django test runner 原始碼的,只是在那個時間點沒想到。
沒有留言:
張貼留言