2
2
# While not critical (and in no way guaranteed!), it would be nice to keep this
3
3
# code compatible with Python 2.3.
4
4
import sys
5
+ try :
6
+ from importlib import reload
7
+ except :
8
+ pass
5
9
6
10
def _resolve_name (name , package , level ):
7
11
"""Return the absolute name of the module to be imported."""
8
12
if not hasattr (package , 'rindex' ):
9
13
raise ValueError ("'package' not set to a string" )
10
14
dot = len (package )
11
- for x in xrange (level , 1 , - 1 ):
15
+ for x in range (level , 1 , - 1 ):
12
16
try :
13
17
dot = package .rindex ('.' , 0 , dot )
14
18
except ValueError :
@@ -19,11 +23,9 @@ def _resolve_name(name, package, level):
19
23
20
24
def import_module (name , package = None ):
21
25
"""Import a module.
22
-
23
26
The 'package' argument is required when performing a relative import. It
24
27
specifies the package to use as the anchor point from which to resolve the
25
28
relative import to an absolute import.
26
-
27
29
"""
28
30
if name .startswith ('.' ):
29
31
if not package :
@@ -35,5 +37,9 @@ def import_module(name, package=None):
35
37
level += 1
36
38
name = _resolve_name (name [level :], package , level )
37
39
38
- __import__ (name )
39
- return sys .modules [name ]
40
+ if name in sys .modules :
41
+ reload (sys .modules [name ])
42
+ else :
43
+ __import__ (name )
44
+ return sys .modules [name ]
45
+
0 commit comments