PIP出现Fatal error in launcher:

在Windows命令行下面输入pip install xxx安装包时,出现Fatal error in launcher:

看提示意思是pip.exe启动时找不到启动器。

其实pip.exe就是一个打包的py脚本,运行时会自动调用python.exe来执行内部的py脚本。

报这个错的意思呢,大概就是它找不到python.exe吧。

所以我用WinHEX打开Scripts目录下面的pip.exe,一查究竟,在文件的末尾发现的关键信息:

卧槽,这家伙竟然把python.exe的绝对路径写在了pip.exe文件里!

python for windows真TM是个智障啊!

这样的python完全不具备Portable特性!

PS:我是为了避免重装系统时重复安装python,所以把安装好的python打包到了其它目录。

把它作为一个绿色软件来执行。当然要把python目录和Scripts目录加入环境变量。

 

然后我又检查了Scripts目录下面的所有文件,几乎所有的exe和py脚本都把python.exe的绝对路径写了上去!!!

既然python.exe已经添加到了环境变量,完全没有必要使用绝对路径,所以我试着手动修改为相对路径。

如下图所示:

保存之后,再次运行pip.exe可以正常工作了。

顺便把Scripts下面的所有文件都做了相同的修改,这样基本上还是具有Portable特性了。

把python移动到任意文件夹,并添加到环境变量PATH中,都可以正常工作。

还可以写个批处理命令,临时添加环境变量,做为python的命令行工具。

把下面的内容另存为python_cmd.bat即可

@title Python
@set PATH=%PATH%%~dp0%;
@set PATH=%PATH%%~dp0%\Scripts;
@cmd /k

 

后记:为了验证这个绝对路径,我又反复多次使用安装程序安装python,都是一样的。

Scripts下面的文件是在安装的时候动态修改过的,看文件修改时间就能看出来。

其它核心文件都是2018年修改,只有这几个文件是安装的日期。

因为它们在安装的时候,就把python.exe的路径给写死进去了。

这一波操作把我惊呆了!

 

 

 

你可能感兴趣的:(python,学习笔记)