У меня есть устаревшее консольное приложение, написанное на Python 2.7. Я должен внести в него небольшие изменения, поэтому я хотел бы отладить его в Visual Studio 2017. Без отладчика Visual Studio приложение просто работает нормально.
Когда я запускаю проект под отладчиком VS2017, он завершается с ошибкой:
TypeError: <module 'abcdef' from '[...]\abcdef.pyc'> is not JSON serializable
Эта ошибка полностью останавливает интерфейс Visual Studio. Единственный оставленный вариант - убить процесс Visual Studio в диспетчере задач.
Вот мой вопрос. Можно ли избежать этой проблемы без изменения вызывающего ее кода? Есть ли в Visual Studio какие-то магические настройки, которые могли бы сделать отладчик счастливым и позволить мне продолжить отладку приложения?
Ниже приведен полный трекбек:
Traceback (most recent call last):
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\wrapper.py", line 1254, in done
fut.result()
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\futures.py", line 40, in result
reraise(self._exc_info)
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\futures.py", line 155, in callback
x = it.send(fut.result())
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\wrapper.py", line 1608, in on_stackTrace
module = self.modules_mgr.add_or_get_from_path(norm_path)
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\wrapper.py", line 618, in add_or_get_from_path
self.proc.send_event('module', reason='new', module=module)
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\ipcjson.py", line 279, in send_event
body=kwargs,
File "c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\ipcjson.py", line 103, in _send
content = json.dumps(payload).encode('utf-8')
File "C:\Python27\lib\json\__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <module 'abcdef' from '[...]\abcdef.pyc'> is not JSON serializable
UPD. Lance Li-MSFT ответ был верным! После воссоздания такого же проекта с нуля ошибка исчезла. Теперь можно отлаживать приложение в VS2017.
UPD. Мистически, после пары успешных запусков воссозданного проекта в отладчике VS2017, эта ошибка появляется снова. Удаление файлов * .pyc и / или каталога .vs не помогает.