Restore sys.path after importing custom kitten
This commit is contained in:
parent
21dbb0e820
commit
57871e1983
@ -17,18 +17,22 @@ def resolved_kitten(k):
|
|||||||
|
|
||||||
def import_kitten_main_module(config_dir, kitten):
|
def import_kitten_main_module(config_dir, kitten):
|
||||||
if kitten.endswith('.py'):
|
if kitten.endswith('.py'):
|
||||||
|
path_modified = False
|
||||||
path = os.path.expanduser(kitten)
|
path = os.path.expanduser(kitten)
|
||||||
if not os.path.isabs(path):
|
if not os.path.isabs(path):
|
||||||
path = os.path.join(config_dir, path)
|
path = os.path.join(config_dir, path)
|
||||||
path = os.path.abspath(path)
|
path = os.path.abspath(path)
|
||||||
if os.path.dirname(path):
|
if os.path.dirname(path):
|
||||||
sys.path.insert(0, os.path.dirname(path))
|
sys.path.insert(0, os.path.dirname(path))
|
||||||
|
path_modified = True
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
src = f.read()
|
src = f.read()
|
||||||
code = compile(src, path, 'exec')
|
code = compile(src, path, 'exec')
|
||||||
g = {'__name__': 'kitten'}
|
g = {'__name__': 'kitten'}
|
||||||
exec(code, g)
|
exec(code, g)
|
||||||
hr = g.get('handle_result', lambda *a, **kw: None)
|
hr = g.get('handle_result', lambda *a, **kw: None)
|
||||||
|
if path_modified:
|
||||||
|
del sys.path[0]
|
||||||
return {'start': g['main'], 'end': hr}
|
return {'start': g['main'], 'end': hr}
|
||||||
|
|
||||||
kitten = resolved_kitten(kitten)
|
kitten = resolved_kitten(kitten)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user