py.test 来自 Visual Studio - “_DebuggerOutput”对象没有属性 'closed'
py.test from Visual Studio - '_DebuggerOutput' object has no attribute 'closed'
我正在为 Visual Studio 和 py.test 使用 Python 工具。如果我 运行 没有调试的脚本,我可以很好地使用 pytest,但是当我 运行 进行调试时,脚本崩溃了。下面是我的代码和我在控制台中获得的输出 window。我已经在 Google 中搜索了答案,但没有找到解决这个问题的方法;似乎以前没有人遇到过这个确切的问题。我 运行宁 Visual Studio 2013 年,使用 PTVS 2.1 VS 2013。
#Code
import pytest
if __name__ == "__main__":
pytest.main("--resultlog=resultlog.txt")
#Output
! C:\Python34\lib\site-packages\colorama\ansitowin32.py
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\_pytest\main.py", line 80, in wrap_session
config.do_configure()
File "C:\Python34\lib\site-packages\_pytest\config.py", line 618, in do_configure
self.hook.pytest_configure(config=self)
File "C:\Python34\lib\site-packages\_pytest\core.py", line 521, in __call__
return self._docall(self.methods, kwargs)
File "C:\Python34\lib\site-packages\_pytest\core.py", line 528, in _docall
firstresult=self.firstresult).execute()
File "C:\Python34\lib\site-packages\_pytest\core.py", line 394, in execute
res = method(*args)
File "C:\Python34\lib\site-packages\_pytest\terminal.py", line 41, in pytest_configure
reporter = TerminalReporter(config, sys.stdout)
File "C:\Python34\lib\site-packages\_pytest\terminal.py", line 101, in __init__
self._tw = self.writer = py.io.TerminalWriter(file)
File "C:\Python34\lib\site-packages\py\_io\terminalwriter.py", line 130, in __init__
file = colorama.AnsiToWin32(file).stream
File "C:\Python34\lib\site-packages\colorama\ansitowin32.py", line 68, in __init__
convert = on_windows and not wrapped.closed and not on_emulated_windows and is_a_tty(wrapped)
AttributeError: '_DebuggerOutput' object has no attribute 'closed'
问:如何解决这个错误,以便我可以从内部调试 Visual Studio?
这是 PTVS 中的一个 bug,已为即将发布的 2.2 版本修复。
目前还没有包含修复的构建,但您可以自己应用它,因为它在 .py 文件中,不需要重新编译。您需要的文件是:
C:\Users\...\AppData\Local\Microsoft\VisualStudio.0Exp\Extensions\Microsoft\Python Tools for Visual Studio.1\visualstudio_py_debugger.py
在里面找到class_DebuggerOutput
,在最后添加:
def __getattr__(self, name):
return getattr(self.old_out, name)
我正在为 Visual Studio 和 py.test 使用 Python 工具。如果我 运行 没有调试的脚本,我可以很好地使用 pytest,但是当我 运行 进行调试时,脚本崩溃了。下面是我的代码和我在控制台中获得的输出 window。我已经在 Google 中搜索了答案,但没有找到解决这个问题的方法;似乎以前没有人遇到过这个确切的问题。我 运行宁 Visual Studio 2013 年,使用 PTVS 2.1 VS 2013。
#Code
import pytest
if __name__ == "__main__":
pytest.main("--resultlog=resultlog.txt")
#Output
! C:\Python34\lib\site-packages\colorama\ansitowin32.py
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\_pytest\main.py", line 80, in wrap_session
config.do_configure()
File "C:\Python34\lib\site-packages\_pytest\config.py", line 618, in do_configure
self.hook.pytest_configure(config=self)
File "C:\Python34\lib\site-packages\_pytest\core.py", line 521, in __call__
return self._docall(self.methods, kwargs)
File "C:\Python34\lib\site-packages\_pytest\core.py", line 528, in _docall
firstresult=self.firstresult).execute()
File "C:\Python34\lib\site-packages\_pytest\core.py", line 394, in execute
res = method(*args)
File "C:\Python34\lib\site-packages\_pytest\terminal.py", line 41, in pytest_configure
reporter = TerminalReporter(config, sys.stdout)
File "C:\Python34\lib\site-packages\_pytest\terminal.py", line 101, in __init__
self._tw = self.writer = py.io.TerminalWriter(file)
File "C:\Python34\lib\site-packages\py\_io\terminalwriter.py", line 130, in __init__
file = colorama.AnsiToWin32(file).stream
File "C:\Python34\lib\site-packages\colorama\ansitowin32.py", line 68, in __init__
convert = on_windows and not wrapped.closed and not on_emulated_windows and is_a_tty(wrapped)
AttributeError: '_DebuggerOutput' object has no attribute 'closed'
问:如何解决这个错误,以便我可以从内部调试 Visual Studio?
这是 PTVS 中的一个 bug,已为即将发布的 2.2 版本修复。
目前还没有包含修复的构建,但您可以自己应用它,因为它在 .py 文件中,不需要重新编译。您需要的文件是:
C:\Users\...\AppData\Local\Microsoft\VisualStudio.0Exp\Extensions\Microsoft\Python Tools for Visual Studio.1\visualstudio_py_debugger.py
在里面找到class_DebuggerOutput
,在最后添加:
def __getattr__(self, name):
return getattr(self.old_out, name)