4747try :
4848 # In the local attach scenario, visualstudio_py_util is injected into globals()
4949 # by PyDebugAttach before loading this module, and cannot be imported.
50- _vspu = visualstudio_py_util
50+ _vspu = ptvsd . visualstudio_py_util
5151except :
5252 try :
53- import visualstudio_py_util as _vspu
54- except ImportError :
5553 import ptvsd .visualstudio_py_util as _vspu
54+ except ImportError :
55+ import visualstudio_py_util as _vspu
5656
5757to_bytes = _vspu .to_bytes
5858exec_file = _vspu .exec_file
6969try :
7070 # In the local attach scenario, visualstudio_py_repl is injected into globals()
7171 # by PyDebugAttach before loading this module, and cannot be imported.
72- _vspr = visualstudio_py_repl
72+ _vspr = ptvsd . visualstudio_py_repl
7373except :
7474 try :
75- import visualstudio_py_repl as _vspr
76- except ImportError :
7775 import ptvsd .visualstudio_py_repl as _vspr
76+ except ImportError :
77+ import visualstudio_py_repl as _vspr
78+
7879
7980try :
8081 import stackless
82+ stackless .tasklet # work-around lazy on-demand importers
8183except ImportError :
8284 stackless = None
8385
@@ -2361,9 +2363,16 @@ def _excepthook(exc_type, exc_value, exc_tb):
23612363 global debugger_thread_id
23622364 debugger_thread_id = _start_new_thread (DebuggerLoop (conn ).loop , ())
23632365
2364- for mod_name , mod_value in sys .modules .items ( ):
2366+ for mod_value in list ( sys .modules .values () ):
23652367 try :
2366- filename = getattr (mod_value , '__file__' , None )
2368+ lazyModule = False
2369+ try :
2370+ lazyModule = mod_value .__class__ .__name__ == 'LazyImporter'
2371+ except :
2372+ lazyModule = False
2373+ filename = None
2374+ if not lazyModule :
2375+ filename = getattr (mod_value , '__file__' , None )
23672376 if filename is not None :
23682377 try :
23692378 fullpath = path .abspath (filename )
@@ -2372,7 +2381,7 @@ def _excepthook(exc_type, exc_value, exc_tb):
23722381 else :
23732382 MODULES .append ((filename , Module (fullpath )))
23742383 except :
2375- traceback .print_exc ()
2384+ traceback .print_exc ()
23762385
23772386 if report :
23782387 THREADS_LOCK .acquire ()
@@ -2597,9 +2606,14 @@ def parse_debug_options(s):
25972606# Accept current Process id to pass back to debugger
25982607def debug (file , port_num , debug_id , debug_options , currentPid , run_as = 'script' ):
25992608 # remove us from modules so there's no trace of us
2600- sys .modules ['$visualstudio_py_debugger' ] = sys .modules ['visualstudio_py_debugger' ]
2601- __name__ = '$visualstudio_py_debugger'
2602- del sys .modules ['visualstudio_py_debugger' ]
2609+ if sys .modules .has_key ('visualstudio_py_debugger' ):
2610+ sys .modules ['$visualstudio_py_debugger' ] = sys .modules ['visualstudio_py_debugger' ]
2611+ __name__ = '$visualstudio_py_debugger'
2612+ del sys .modules ['visualstudio_py_debugger' ]
2613+ elif sys .modules .has_key ('ptvsd.visualstudio_py_debugger' ):
2614+ sys .modules ['$ptvsd.visualstudio_py_debugger' ] = sys .modules ['ptvsd.visualstudio_py_debugger' ]
2615+ __name__ = '$ptvsd.visualstudio_py_debugger'
2616+ del sys .modules ['ptvsd.visualstudio_py_debugger' ]
26032617
26042618 wait_on_normal_exit = 'WaitOnNormalExit' in debug_options
26052619
@@ -2753,4 +2767,4 @@ def _get_template_line(frame):
27532767 return _offset_to_line_number (_read_file (file_name ), source [1 ][0 ])
27542768 except :
27552769 return None
2756- ## End modification by Don Jayamanne
2770+ ## End modification by Don Jayamanne
0 commit comments