鱼C论坛

 找回密码
 立即注册
查看: 4955|回复: 33

[技术交流] 解决 pip 运行出现 unable to create process 的问题

[复制链接]
发表于 2023-2-12 11:53:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

[b]
解决 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': ???????????


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

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


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

细心的伙伴可能会发现 python.exe 的路径pip.exe 的路径没有交集(C:\Program Files\Python310d:\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 的路径

                        截图20230212114804.png

        不会操作的童鞋也没有关系,我这里写了一个恢复 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[end:])
    fd.truncate()        # 清除写入时没有被覆盖掉的字节


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

评分

参与人数 7荣誉 +27 鱼币 +12 贡献 +14 收起 理由
凌凌祺 + 2 + 5 + 2
ciwmy + 5 + 3 鱼C有你更精彩^_^
一点沙 + 4 荣誉已满20开心(^人^)
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^
zhangjinxuan + 4 可以讲一讲 SSLerror 或一更新 pip 就不见.
sfqxx + 5 + 3 精华帖子即将出现
liuhongrun2022 + 2 + 2 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 11:58:34 | 显示全部楼层

回帖奖励 +5 鱼币

支持楼主!(第一)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 11:58:40 | 显示全部楼层

回帖奖励 +5 鱼币

厉害!

点评

我很赞同!: 5.0
我很赞同!: 5
相差6秒……  发表于 2023-2-12 11:59

评分

参与人数 1鱼币 +5 收起 理由
isdkz + 5 感谢捧场

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-12 12:02:06 | 显示全部楼层
sfqxx 发表于 2023-2-12 11:58
支持楼主!(第一)

谢谢支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-12 12:02:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 12:12:58 | 显示全部楼层

回帖奖励 +5 鱼币

学习一下

评分

参与人数 1鱼币 +5 收起 理由
isdkz + 5 感谢捧场

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 12:23:22 | 显示全部楼层
我要鱼币

评分

参与人数 1鱼币 +5 收起 理由
isdkz + 5 感谢捧场

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 12:53:46 | 显示全部楼层

回帖奖励 +5 鱼币

厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 13:28:11 | 显示全部楼层

回帖奖励 +5 鱼币

之前我好像遇到过什么 SSLError 好像是的,我换了个版本就好了……
还有一天更新 pip,结果更新失败,更离谱的是, pip 他居然直接不见了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
ciwmy + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 13:31:25 | 显示全部楼层
isdkz 发表于 2023-2-12 13:29
SSLError是网络问题,一般是因为你挂了代理

这样啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 13:33:07 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 14:17:02 | 显示全部楼层

回帖奖励 +5 鱼币

有鱼币?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 14:32:56 | 显示全部楼层

回帖奖励 +5 鱼币

这个问题曾经困扰了我很长时间.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 15:39:52 | 显示全部楼层

回帖奖励 +5 鱼币

学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 16:00:47 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-12 20:54:04 | 显示全部楼层

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

至于 pip 不见应该是更新的时候旧版本卸载了,但是新版本还没装上,所以就没有 pip 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 21:31:14 | 显示全部楼层

回帖奖励 +5 鱼币

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 21:38:29 | 显示全部楼层

回帖奖励 +5 鱼币

感谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 23:02:47 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表