解決 在 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

相關文章
相關標籤/搜索