赞
踩
在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的路径给写死进去了。
这一波操作把我惊呆了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。