解决 在 WINDOWS 下 同时安装 python2 python3 后 pip 错误

再以前同时安装 python 后 只需把环境变量PATH 里面改成 python

PATH=C:\Python36-32\Scripts\;C:\Python36-32\;C:\Python27\;C:\Python27\Scripts

而后把python3安装后的文件按照以下修改:git

C:\Python36-32\Scripts\pip.exe 改成 C:\Python36-32\Scripts\pip3.exegithub

C:\Python36-32\python.exe 改成 C:\Python36-32\python3.exe编辑器

C:\Python36-32\pythonw.exe 改成 C:\Python36-32\pythonw3.exeui

这样就能够再CMD 命令行下直接使用 python python3 pip pip3 等命令google

由于最近重装系统,安装了python2 和python3的最新版本 python 2.7.13 和 python 3.6.0spa

按照上述修复该方法,python pip python3 命令工做正常,但 pip3 执行时显示下列错误:命令行

Fatal error in launcher: Unable to create process using '"'调试

显然是创建进程时没有找到进程相关文件啊。想办法吧。code

发现 C:\Python36-32\Scripts 目录下有一样图标及KB数相同的文件文件名不同,调用的功能也不同的几个exe文件:

easy_instal3l.exe

easy_install-3.6.exe

pip.exe

根据经验猜测这几个EXE文件实际上是同一个EXE文件加上不一样的资源或者在调试破解领域里叫附加资源去执行不一样python 脚本,顺手用7z打开证明了个人猜测

先去google一会找pip 这个exe的源代码,找了一下子没找到,我就直接用IDA PRO F5 ,此EXE大概逻辑是找EXE最后多少字节以 特殊符号 分割开头的一个字符串并创建进程附加参数并执行。

用HEX编辑器打开 pip.exe  翻到最后部分

看红色圈起来的部分,发现这里面是写死了路径的,应该是python安装时附加的这个字符串,OK,直接把 

c:\python36-32\python.exe 改成 c:\python36-32\pytho3.exe 保存。

而后 复制 C:\Python36-32\python3.exe 改成 C:\Python36-32\pytho3.exe

你没看错,去掉了n,由于原来字符串python.exe 有10个字符,咱们一般在修改EXE时为了工做正常不产生数据偏移之类的

错误要保证字符串的长度及位置,为了偷懒我直接改成 pytho3.exe  这样能够工做正常。

 

下一步时找到这个pip.exe “壳”的代码和 安装程序什么是偶附加这个资源,看看能不能提一个bug修复下把他变成自动获取当前exe路径的上级路径的python3的位置。

(显然python3是我重命名的,这个思路很差)

 

相关资源参考:

https://github.com/pypa/setuptools/blob/master/msvc-build-launcher.cmd

https://github.com/pypa/setuptools/blob/master/launcher.c

https://www.python.org/dev/peps/pep-0397/

 

https://bitbucket.org/pypa/distlib/src/e4339220120d334fb9030303b8e919594acb829d/PC/?at=default

相关文章
相关标签/搜索