描述
先前在Python3.7版本安装visdom是正常的,升级成Python3.8之后再用visdom就不正常了,如下图:
注:第一次执行python -m visdom.server时,会先执行scripts download,会在visdom目录下创建static存脚本。这个操作概率被墙,反正有梯子也不怕。如果实在下载不了,参考此CSDN博客给出的百度云链接b10a下载得了。
问题原因
实际上,出现这个问题是因为Python3.8的asyncio库有改动:windows上使用循环事件选择器,需要先配置asyncio。配置方法:
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
这个改动使得tornado 6.0.4库原先的一些操作出问题了,关于这个在tornado的github上也有人提出来讨论:Prepare for python 3.8 on windows,并且tornado的官网在6.0.4更新日志也指出了该问题:What’s new in Tornado 6.0.4
而visdom的启动脚本server.py中使用tornado库来创建变量监听,所以也需要做改动(先配置asyncio)。
解决方法
打开visdom的server.py脚本,在start_server函数中app.listen()语句,即1792行,调用之前,配置asyncio。
visdom库在python目录下的/Lib/site-packages/visdom/
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())