浏览代码

[mod] move load_module function to utils

Adam Tauber 8 年前
父节点
当前提交
55dc538398
共有 2 个文件被更改,包括 17 次插入13 次删除
  1. 4
    13
      searx/engines/__init__.py
  2. 13
    0
      searx/utils.py

+ 4
- 13
searx/engines/__init__.py 查看文件

16
 (C) 2013- by Adam Tauber, <asciimoo@gmail.com>
16
 (C) 2013- by Adam Tauber, <asciimoo@gmail.com>
17
 '''
17
 '''
18
 
18
 
19
-from os.path import realpath, dirname, splitext, join
19
+from os.path import realpath, dirname
20
 import sys
20
 import sys
21
-from imp import load_source
22
 from flask_babel import gettext
21
 from flask_babel import gettext
23
 from operator import itemgetter
22
 from operator import itemgetter
24
 from searx import settings
23
 from searx import settings
25
 from searx import logger
24
 from searx import logger
25
+from searx.utils import load_module
26
 
26
 
27
 
27
 
28
 logger = logger.getChild('engines')
28
 logger = logger.getChild('engines')
32
 engines = {}
32
 engines = {}
33
 
33
 
34
 categories = {'general': []}
34
 categories = {'general': []}
35
+_initialized = False
35
 
36
 
36
 engine_shortcuts = {}
37
 engine_shortcuts = {}
37
 engine_default_args = {'paging': False,
38
 engine_default_args = {'paging': False,
46
                        'time_range_support': False}
47
                        'time_range_support': False}
47
 
48
 
48
 
49
 
49
-def load_module(filename):
50
-    modname = splitext(filename)[0]
51
-    if modname in sys.modules:
52
-        del sys.modules[modname]
53
-    filepath = join(engine_dir, filename)
54
-    module = load_source(modname, filepath)
55
-    module.name = modname
56
-    return module
57
-
58
-
59
 def load_engine(engine_data):
50
 def load_engine(engine_data):
60
 
51
 
61
     if '_' in engine_data['name']:
52
     if '_' in engine_data['name']:
65
     engine_module = engine_data['engine']
56
     engine_module = engine_data['engine']
66
 
57
 
67
     try:
58
     try:
68
-        engine = load_module(engine_module + '.py')
59
+        engine = load_module(engine_module + '.py', engine_dir)
69
     except:
60
     except:
70
         logger.exception('Cannot load engine "{}"'.format(engine_module))
61
         logger.exception('Cannot load engine "{}"'.format(engine_module))
71
         return None
62
         return None

+ 13
- 0
searx/utils.py 查看文件

6
 from babel.dates import format_date
6
 from babel.dates import format_date
7
 from codecs import getincrementalencoder
7
 from codecs import getincrementalencoder
8
 from HTMLParser import HTMLParser
8
 from HTMLParser import HTMLParser
9
+from imp import load_source
10
+from os.path import splitext, join
9
 from random import choice
11
 from random import choice
12
+import sys
10
 
13
 
11
 from searx.version import VERSION_STRING
14
 from searx.version import VERSION_STRING
12
 from searx.languages import language_codes
15
 from searx.languages import language_codes
285
             if l[1].lower() == lang.lower():
288
             if l[1].lower() == lang.lower():
286
                 return (True, l[0][:2], l[1].lower())
289
                 return (True, l[0][:2], l[1].lower())
287
         return False
290
         return False
291
+
292
+
293
+def load_module(filename, module_dir):
294
+    modname = splitext(filename)[0]
295
+    if modname in sys.modules:
296
+        del sys.modules[modname]
297
+    filepath = join(module_dir, filename)
298
+    module = load_source(modname, filepath)
299
+    module.name = modname
300
+    return module