Anaconda3的Python 3.6.4 Shell执行1+2时出现OSError及内部错误求助
解决Anaconda Python 3.6.4 IDLE执行命令触发内部错误的问题
我之前遇到过完全一样的问题——这是IDLE的RPC通信层和旧版Anaconda Python 3.6.x环境的兼容性bug。rpc.py里的错误源于一个有问题的套接字处理实现,在后续的Python 3.6补丁版本中已经被修复。以下是几个最靠谱的解决办法:
方法一:替换有问题的rpc.py文件
这是Python 3.6.4版本IDLE的已知bug,你可以从更新的3.6.x版本(比如3.6.8及以上)中获取修复后的文件替换掉原文件:
- 找到Anaconda安装路径下的
C:\Users\Arshad Shariff\Anaconda3\lib\idlelib\rpc.py - 把原文件重命名为
rpc.py.bak做备份 - 下载Python 3.6.8的源码包,找到
Lib/idlelib目录下的rpc.py文件 - 将新的
rpc.py粘贴到Anaconda的idlelib目录中覆盖旧文件 - 重启IDLE,执行
1 + 2测试
方法二:改用Anaconda内置的IPython替代IDLE
IDLE不是唯一的交互环境,Anaconda自带的IPython更稳定,完全不会出现这个bug:
- 打开Anaconda Prompt,输入
ipython启动交互 shell - 在这里执行
1 + 2,就不会触发内部错误了
方法三:更新你的Anaconda Python环境
Python 3.6.4已经相当老旧,这个bug在后续的3.6.x补丁版本中被修复了。更新环境应该能解决问题:
- 打开Anaconda Prompt,执行
conda update conda更新包管理器 - 接着执行
conda update python,把Python升级到3.6系列的最新补丁版本(比如3.6.15) - 更新完成后重启IDLE,验证问题是否消失
补充说明:关闭Windows防火墙没用是因为这根本不是网络相关的问题——它是IDLE进程间通信代码的内部bug,所以防火墙设置对这个问题没有任何影响。
内容的提问来源于stack exchange,提问作者Md Arshad Ali
相关产品推荐
相关产品推荐

