Original report by Joe Paris (Bitbucket: joeparislb ).
Hello,
I was following this tutorial to see if I wanted to assign it to my students as a way of introducing them to Thonny. I entered their example code that purposely has a syntax error in it (a missing double-quote to close a string) as shown below:
def factorial(num):
if num == 1:
return 1
else:
return num * factorial(num - 1)
print("The factorial of 3 is:)
print(factorial(3))
Hitting the degub button generates the following error:
Traceback (most recent call last):
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\workbench.py", line 1432, in event_generate
handler(event)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\assistance.py", line 138, in handle_toplevel_response
self._explain_exception(msg["user_exception"])
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\assistance.py", line 225, in _explain_exception
self.text.append_rst(rst)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\thonny\rst_utils.py", line 113, in append_rst
doc = docutils.core.publish_doctree(rst_source)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\core.py", line 481, in publish_doctree
output = pub.publish(enable_exit_status=enable_exit_status)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\core.py", line 217, in publish
self.settings)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\readers\__init__.py", line 72, in read
self.parse()
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\readers\__init__.py", line 78, in parse
self.parser.parse(self.input, document)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\__init__.py", line 191, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 171, in run
input_source=document['source'])
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 239, in run
context, state, transitions)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 460, in check_line
return method(match, context, next_state)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2753, in underline
self.section(title, source, style, lineno - 1, messages)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 327, in section
self.new_subsection(title, lineno, messages)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 395, in new_subsection
node=section_node, match_titles=True)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 282, in nested_parse
node=node, match_titles=match_titles)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 196, in run
results = StateMachineWS.run(self, input_lines, input_offset)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 239, in run
context, state, transitions)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\statemachine.py", line 460, in check_line
return method(match, context, next_state)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2328, in explicit_markup
self.explicit_list(blank_finish)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 2361, in explicit_list
self.parent += self.unindent_warning('Explicit markup')
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\parsers\rst\states.py", line 434, in unindent_warning
line=lineno)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\__init__.py", line 221, in warning
return self.system_message(self.WARNING_LEVEL, *args, **kwargs)
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\__init__.py", line 192, in system_message
self.stream.write(msg.astext() + '\n')
File "C:\Users\joepa\AppData\Local\Programs\Thonny\lib\site-packages\docutils\utils\error_reporting.py", line 199, in write
self.stream.write(data)
AttributeError: 'NoneType' object has no attribute 'write'
In addition to the error dialog appearing the Assistant window (which this example was also trying to illustrate) is blank. This is happening on Windows 10 using Thonny 3.0.8.
该提问来源于开源项目:thonny/thonny