Python3.10中导入vpython出现ZeroDivisionError(浮点除以零)错误求助
问题描述
我使用Python 3.10.0版本,已通过pip成功安装vpython。但执行以下代码:
from vpython import * print('hello')
时,虽然成功打印出hello,但随后出现如下错误:
exit Exception ignored in atexit callback: <function Exit at 0x1095d4ee0> Traceback (most recent call last): File "/Users/.../.pyenv/versions/3.10.0/lib/python3.10/site-packages/vpython/vpython.py", line 22, in Exit a = 1.0/zero ZeroDivisionError: float division by zero
请问该错误是什么含义?我该如何解决?
错误含义与解决方法
错误含义
这是vpython库的退出回调函数存在bug导致的异常:程序正常执行完业务逻辑后,vpython注册的Exit退出回调函数会在程序结束时自动执行,而该函数里有一行代码1.0/zero,其中zero变量的值为0,触发了除零错误(ZeroDivisionError)。这个错误不影响你的代码执行,只会在程序退出时抛出。
解决方法
- 升级vpython到最新版本
该bug在vpython的后续版本中已被修复,执行命令更新库:pip install --upgrade vpython - 手动移除有问题的退出回调
如果暂时无法升级,可以在代码末尾添加逻辑,移除vpython注册的错误退出回调:from vpython import * import atexit print('hello') # 遍历退出回调列表,移除vpython的Exit函数 for handler in atexit._exithandlers: if handler[0].__name__ == 'Exit': atexit._exithandlers.remove(handler) break - 切换到vpython web版
若无需本地GUI运行,可使用vpython的web版本,通过浏览器运行代码,避免本地环境的兼容性问题。
内容的提问来源于stack exchange,提问作者user2169778
相关产品推荐
相关产品推荐

