skyhiter

衣带渐宽终不悔,为伊消得人憔悴

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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之类的文件名都有,这些库文件名都极易与我们起名的规则类似。。。

posted on 2013-10-21 21:19  skyhiter  阅读(18265)  评论(3编辑  收藏  举报