Anaconda安装出现 WindowsError:[Error 2]或者系统找不到指定文件的解决办法

我碰到的问题和这位老哥很像https://ask.csdn.net/questions/695597,真是同是天涯沦落人啊。Anaconda安装出现 WindowsError:[Error 2]或者系统找不到指定文件的解决办法_第1张图片

我之前用的anaconda2,后来因为其他原因需要使用anaconda3,当我卸载掉anaconda2的时候发现,安装anaconda3出现问题了。这个问题后来查询百度,基本上都是failed to create anacoda menu。无法生成anaconda 快捷方式。或者UnicodeEncodeError这样的编码问题,我试了一下他们的办法发现不能解决我的问题。

为了解决问题,只好通过他的错误信息逐个查找了,我查询了安装日志,发现安装包解压之后,主要运行了一下命令;

pythonw.exe -E -s d:\ProgramData\Anaconda3\Lib\_nsis.py mkmenus 

pythonw.exe -E -s d:\ProgramData\Anaconda3\Lib\_nsis.py mkdirs

pythonw.exe -E -s d:\ProgramData\Anaconda3\Lib\_nsis.py post_install

其中在参数是post_install的时候报了错。其中是在subprocess.py里面有问题。我当时觉得可能是anaconda2安装的时候改变了系统环境,导致文件找不到,然后我试着在安装anaconda2,发现anaconda2也安装不上了,这就没有退路了,只好硬着头皮再看subprocess.py里面做了什么东西。

根据提示,找到错误的地方,发现错误的代码主要是用了_subprocess模块创建新的进程。

hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                                         # no special security
                                         None, None,
                                         int(not close_fds),
                                         creationflags,
                                         env,
                                         os.fspath(cwd) if cwd is not None else None,
                                         startupinfo)

我看了上面这个代码,觉得应该是startupinfo这项出了问题,然后代码里面发现没有地方修改了startupinfo这个类,打印了里面的项发现确实和初始的没有什么区别。后面查了资料,发现args那一项才是需要添加的进程,和startupinfo无关,然后我打印了args,看看他是什么命令,如下图所示:

Anaconda安装出现 WindowsError:[Error 2]或者系统找不到指定文件的解决办法_第2张图片

 终于发现问题在哪里了,要执行的args的形式明显不对,本来要调用C:/system32/cmd.exe的,结果还把C:/system32加进去了,导致的命令不对。一看感觉是%ComSpec%环境变量,然后echo %COMSPEC%一看,果然是这里有问题,环境变量不知道什么时候多了一个C:/system32,然后我把%ComSpec%环境变量改成C:/system32/cmd.exe,运行了一下命令发现没有报错了。然后再重新装了一下就没有问题了。

你可能感兴趣的:(python)