WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
作者:BinSys 发布时间:2023-07-01 11:01:00
再之前同时安装 python 后 只需把环境变量PATH 里面改为
PATH=C:\Python36-32\Scripts\;C:\Python36-32\;C:\Python27\;C:\Python27\Scripts
然后把python3安装后的文件按照如下修改:
C:\Python36-32\Scripts\pip.exe 改为 C:\Python36-32\Scripts\pip3.exe
C:\Python36-32\python.exe 改为 C:\Python36-32\python3.exe
C:\Python36-32\pythonw.exe 改为 C:\Python36-32\pythonw3.exe
这样就可以再CMD 命令行下直接使用 python python3 pip pip3 等命令
因为最近重装系统,安装了python2 和python3的最新版本 python 2.7.13 和 python 3.6.0
按照上述修复该方法,python pip python3 命令工作正常,但 pip3 执行时显示下列错误:
Fatal error in launcher: Unable to create process using '"'
显然是建立进程时没有找到进程相关文件啊。想办法吧。
发现 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


猜你喜欢
- 一同事反馈有一MySQL实例因为断电之后,启动不了。用了innodb_force_recovery=6也无效,于是前往查看。排查过程:最早的
- User模型 User模型是这个框架的核心部分。他的完整的路径是在django.contrib.auth.models.User。字段 内置
- 本文主要介绍了一个获得当前数据库对象依赖关系的实用算法,具体示例请大家参考下文:create function&nb
- 最近用golang写了一个处理文件的脚本,由于其中涉及到了文件读写,开始使用golang中的 io 包,后来发现golang 中提供了一个b
- 一、命令提示符窗口安装卸载1、安装第一种,最常用的,初学者也是基本都是用的这个方法,直接在cmd里面安装。首先键盘按住win+r就会弹出来运
- 一、Python 矩阵基本运算引入 numpy 库import numpy as np1. python矩阵操作1)使用
- 机器学习之随机森林,供大家参考,具体内容如下1、Bootstraping(自助法)  
- 今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。一、MySQL外键约束作用外键约束(Foreign Key)即数
- 我这里只讲几点有关于MySQL数据库安装后遇到的个别问题 我之前安装过MYSQL好像不用手动启动服务,具体也忘记了,但我上回给公司安装的那个
- mixins混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。当组件使用混合对象时
- 程序运算时往往需要数据,而数据的IO又往往需要时间传输,而常见的串行处理,是一个任务处理完成才接着处理新的任务, 其效率低下可想而知。 假如
- 表结构如下面代码创建 CREATE TABLE test_tb ( TestId int not null identity(1,1) pr
- 本文目的是创建一个MySQL的image,并且在新创建出来的容器里自动启动MySQL服务接受外部连接步骤:1. 首先创建一个目录并在目录下创
- 一、统计数组 arr 中值等于 item 的元素出现的次数function count(arr, item) { var co
- 1.window.location实例:http://www.myurl.com:8866/test?id=123&username
- 简介在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SER
- 第一步 关闭代码拼写检查setting–>Inspections–>Spelling–>Typo,取消勾选:第二步 关闭代
- 一. 元组元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作。1.1 元组的创建元组
- 学习计划很容易就被打断,坚持也不容易。最近公司里开会,要调整业务方向,建议学习NodeJS。NodeJS之前我就会一点,但是没有深入研究。N
- rstrip()方法返回所有字符都被去除的字符串(缺省为空格字符)结束字符串的副本。语法以下是rstrip()方法的语法:str