好饒舌。
只是因為程式目錄下有好幾個 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 原始碼的,只是在那個時間點沒想到。
