一、问题描述
VS2019 使用 Python2.7 环境进行调试时,控制台打印以下错误:
Traceback (most recent call last):
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 257, in _on_run
self.process_net_command_json(self.py_db, json_contents)
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_process_net_command_json.py", line 190, in process_net_command_json
cmd = on_request(py_db, request)
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_process_net_command_json.py", line 622, in on_setbreakpoints_request
py_db, filename, btype, breakpoint_id, line, condition, func_name, expression, suspend_policy, hit_condition, is_logpoint, adjust_line=True)
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_api.py", line 436, in add_breakpoint
py_db.apply_files_filter(self._DummyFrame(filename), filename, False)
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 1147, in apply_files_filter
exclude_by_filter = self._exclude_by_filter(frame, filename)
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 1110, in _exclude_by_filter
if self.get_file_type(frame) == self.PYDEV_FILE:
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 897, in get_file_type
if self.dont_trace_external_files(abs_real_path_and_basename[0]):
File "d:\programfiles\microsoft visual studio\2019\professional\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_api.py", line 807, in custom_dont_trace_external_files
return abs_path.startswith(start_patterns) or abs_path.endswith(end_patterns)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 3: ordinal not in range(128)
二、解决方案
1. 修改 pydevd_api.py
根据错误提示中的路径打开 pydevd_api.py 文件修改如下:
import sys
py_ver = sys.version
if py_ver.split('|')[0].split('.')[0] == '2':
reload(sys)
sys.setdefaultencoding('gbk')
2. 添加文件 sitecustomize.py
找到Pytho2.7环境安装目录,进入<RootDir>\Lib\site-packages 目录,新建文件 sitecustomize.py,内容如下
import sys
sys.setdefaultencoding('gbk')
参考: