Python IDLE 错误描述:
Subprocess Startup Error
IDLE's subprocess didn't make connection. Either IDLE can't start a subprocess or personal firewall software is blocking the connection.
------------------------------
错误截图:
图1
运行环境:XP sp3 、 Python 2.7.5
-----------------------------
错误原因及解决方案:
1、原因之一:可能如提示那样,是由于瘟都死(windows)防火墙给拦截,所以可以试试关闭windows防火墙试试错误能否重现。
2、原因之二:这个原因可能更常见。
现在重新叙述一遍该Error。
这个错误现象是用IDLE打开xxx.py文件后,点击运行(或按F5),IDLE崩溃,并弹出图1.
但是xxx.py可以在命令行下解释并正常运行(即在Winkey+R,输入cmd,然后python xxx.py。前提是python已加入环境变量)。
这个现象说明xxx.py语法非常正确,所以导致IDLE崩溃的原因只能是IDLE本身有问题。
于是作为一个不称职的程序员,一个常见的错觉就是“这不可能,一定是编译器出了问题!!!”...怀疑Python安装有问题或者是莫名其妙的Python某个配置文件被改了...接着卸了重装Python...还是不行...换个电脑试试还是不行!!!.....一句“f**k”出口,最后只能将问题定性为“一定死我人品不好”....对于一些毅力超强的人来说使出了杀手锏“TMD,LZ要重装系统!”,结果重装完系统还是崩溃。。。呵呵
................................................
以上为活跃气氛。
................................................
经过仔细分析,发现这么个情况:
1、xxx.py的同级目录下有个code.py和code.pyc文件(注:code.py是我自己瞎写的一个文件,但是code.pyc不知道何时生成的)。
2、xxx.py的同级目录下所有.py文件IDLE都不能正常运行。
3、如果将xxx.py复制到另一个目录下,xxx.py用IDLE可以正常运行!
综上,问题就在于这个code.py和code.pyc上。
我到Python裤中一查,果然code.py这个文件名竟然是系统文件名!
然后调查了一下D:\Python27\Lib\code.py文件的功能,发现是这样的:
在python的help文档中这样写道:Utilities needed to emulate Python's interactive interpreter.
也就是说这个code.py功能是模拟Python交互式解释器。
并且,如果IDLE打开xxx.py,如果同等目录下还有一个”code.py"文件名的话(它检查code.py内容是什么),会先编译(解释)code.py生成code.pyc,然后再执行解释xxx.py.
其结果就相当于打开多个终端,而且一个终端的打开代码还是错误的(此处纯属YY,如有不妥之处请联系我)。
于是就出现了什么子进程无法连接错误之类的Error。
.............................................
解决方案:
不要自己给文件名起"code.py"这个名字!或者是检查要运行的源文件目录下有没有code.py、code.pyc这两个文件中的一个,删除即可。
温馨提示:
自己定义的文件名最好不要与系统库文件名相同,有可能会出现一些未知错误!
我们可以进入Python lib目录看看,发现Python库文件起的名字真不怎么地,什么abc.py,test_xxx.py之类的文件名都有,这些库文件名都极易与我们起名的规则类似。。。