isdkz 发表于 2023-2-12 11:53:05

解决 pip 运行出现 unable to create process 的问题

本帖最后由 isdkz 于 2023-3-9 21:13 编辑

解决 pip 运行出现 unable to create process 的问题

有一些小伙伴在运行 pip 的时候会出现以下类型的报错:

Fatal error in launcher: Unable to create process using '"C:\Program Files\Python310\python.exe""d:\python310\Scripts\pip.exe" list': ???????????

遇上这种问题却没有办法解决,而且网上也没有找到相关的资料,很多小伙伴选择的方式可能就是重装了,

但是有一些爱折腾的小伙伴就不乐意了,遇到问题就重装还怎么学到新姿势{:10_243:} ,


所以我就来给大家说说遇到这种问题需要怎么解决。

细心的伙伴可能会发现 python.exe 的路径跟 pip.exe 的路径没有交集(C:\Program Files\Python310 与 d:\python310 不是一个目录)。

当然,这两个路径也有可能存在交集。那么,出现这个报错的原因是什么呢?


熟悉 python 的童鞋可能知道:
    python 运行模块的方式是 python -m 模块名,pip 也不例外,它的运行方式应该为 python -m pip,
    有一些可以通过 python -m pip 运行的文件会编译成 .exe 文件存放在 Scripts 目录中,pip 即是其中之一

Unable to create process 报错中的 pip.exe 的路径是当前运行的 pip 所在的路径,这个并不重要,

重要的是 python.exe 的路径,之所以出现 Unable to create process 这个报错就是因为无法执行 "C:\Program Files\Python310\python.exe" -m pip


这个时候就分两种情况了:

第一种情况(python.exe 和 pip.exe 的路径是同一个 python 目录):
        这时候是因为没有正确的卸载 python,导致 python.exe 不在了,所以无法执行 python -m pip,但是 pip.exe 还在,而且环境变量也还在,
        所以运行了这个 python 已经不在了的 pip,导致出错。

        解决方法:删掉这个 python 目录,且删掉跟这个 python 目录相关的所有环境变量,因为这个 python 目录的 python.exe 都不在了,其它的留着也没有意义


第二种情况(python.exe 和 pip.exe 的路径是同一个目录):
        这个时候可以去 pip.exe 的所在的那个 python 的目录(也就是 Scripts 目录的父目录)看看 python.exe 还在不在,
        如果 python.exe 还在的话,说明这是因为你之前迁移过 python 目录,或者有给 python 目录重新命名,
        如果你还记得自己曾经确实做过这些操作的话,连 python.exe 这个文件还在不在都不用去看
       
        解决方法:用 notepad++ (不能用记事本,会破坏原来的格式)打开 pip.exe 这个文件(如果 pip.exe 所在路径需要管理员权限才能写的话 notepad++ 得用管理员权限打开)
                        notepad++ 使用 CTRL + F 快捷键打开搜索功能,搜索 python.exe,
                        然后将 #!"C:\Program Files\Python310\python.exe" 双引号里面的路径修改为正确的 python.exe 的路径
                       

      不会操作的童鞋也没有关系,我这里写了一个恢复 pip 的脚本:
                import os
import re
import sys
import sysconfig

scripts_path = sysconfig.get_path('scripts')         # 获取 pip 安装路径
executable_path = sys.executable                     # 获取当前环境所使用的 python.exe 的路径


with open(os.path.join(scripts_path, 'pip.exe'), 'rb+') as fd:
    content = fd.read()
    fd.seek(0)               # 移动指针到文件开头
    start, end = re.search(rb'(?<=#!").*\.exe(?=")', content).span()
    fd.write(content[:start] + executable_path.encode() + content)
    fd.truncate()      # 清除写入时没有被覆盖掉的字节


        当然,这种方法不止适用于 pip,还适用于 Scripts 目录下的所有 exe 文件,比如 pyinstaller

sfqxx 发表于 2023-2-12 11:58:34

支持楼主!(第一{:5_95:})

liuhongrun2022 发表于 2023-2-12 11:58:40

厉害!

isdkz 发表于 2023-2-12 12:02:06

sfqxx 发表于 2023-2-12 11:58
支持楼主!(第一)

谢谢支持{:5_110:}

isdkz 发表于 2023-2-12 12:02:46

liuhongrun2022 发表于 2023-2-12 11:58
厉害!

感谢捧场{:5_109:}

汐澜sama 发表于 2023-2-12 12:12:58

学习一下

sfqxx 发表于 2023-2-12 12:23:22

我要鱼币

一点沙 发表于 2023-2-12 12:53:46

厉害

zhangjinxuan 发表于 2023-2-12 13:28:11

之前我好像遇到过什么 SSLError 好像是的,我换了个版本就好了……{:10_306:}
还有一天更新 pip,结果更新失败,更离谱的是, pip 他居然直接不见了{:10_257:}

isdkz 发表于 2023-2-12 13:29:56

zhangjinxuan 发表于 2023-2-12 13:28
之前我好像遇到过什么 SSLError 好像是的,我换了个版本就好了……
还有一天更新 pip,结果更新 ...

SSLError是网络问题,一般是因为你挂了代理

zhangjinxuan 发表于 2023-2-12 13:31:25

isdkz 发表于 2023-2-12 13:29
SSLError是网络问题,一般是因为你挂了代理

这样啊{:10_277:}

las6040 发表于 2023-2-12 13:33:07

{:5_108:}{:5_93:}{:5_95:}

!!! 发表于 2023-2-12 14:17:02

有鱼币?

七彩云南 发表于 2023-2-12 14:32:56

这个问题曾经困扰了我很长时间.

别吃我饼干 发表于 2023-2-12 15:39:52

学习一下

lxydaw 发表于 2023-2-12 16:00:47

{:5_106:}

isdkz 发表于 2023-2-12 20:54:04

zhangjinxuan 发表于 2023-2-12 13:31
这样啊

嗯嗯,我经常就是挂代理的时候会出现 SSLError,现在还没有发现是什么原因,

至于 pip 不见应该是更新的时候旧版本卸载了,但是新版本还没装上,所以就没有 pip 了

leletatann 发表于 2023-2-12 21:31:14

谢谢{:10_275:}

hornwong 发表于 2023-2-12 21:38:29

感谢分享!

woshizhangpengp 发表于 2023-2-12 23:02:47

{:5_106:}
页: [1] 2
查看完整版本: 解决 pip 运行出现 unable to create process 的问题