Anekys 发表于 2021-8-17 13:15

记一次自行修复pip安装模块报错

在一次执行pip install wordcloud安装模块时,突然发现,pip安装竟然失败了

这是我第一次修改完pip的源以后安装模块报错

按照以往的一贯做法,将问题提交给百度,就能查到一大堆的解决办法,尽管很多时候他们的办法都是同一个办法
我在百度中键入了pip 安装Wordcloud失败怎么办 成功查到三种方法
1.安装离线文件,也就是whl文件,我一开始也是对这个办法信心满满,但是很可惜,它失败了
2.指定其他源再次尝试安装 ,这个直接pass,我已经换过国内源了
3.使用sudo pip install -r requirements.txt安装依赖包后再安装Wordcloud 我是Windows环境,同样直接pass


在意识到百度不是万能的以后,我重新将注意力聚焦到错误本身上


可以很明显的看到错误代码,以及底下的log字样,和错误位置
安装以往调程序的习惯,我先去查了log文件,不过并没有找到这个文件
这时再看错误代码,emmmm代码是1?然后跟了一大堆路径和代码并且是未格式化的状态,完全没有耐心看下去
直接复制ERROR后面的错误代码扔到百度试试,
结果还是和之前百度的都差不多,大多都是安装离线文件,这个办法已经被pass了,唯一一个看起来好像有参考价值的答案,报错信息却不一样,但是却给了我一些启发
可以看到,错误代码上面显示的错误内容是AttributeError: 'str' object has no attribute 'decode'
而且标明了位置在192行
按照这个路径成功的找到了报错的py文件,和具体的代码内容


报错显示这里没有decode方法,按照以往的Python经验,可能是因为这个py文件使用Python2写的,在Python2的时候可以直接对str进行decode而到了Python3的str则没有了这个方法,只有将str给encode之后才能decode
考虑到这个py文件是pip要用到且Python自带的,先将其备份一份然后在decode前面加上一个.encode()然后进行保存


保存之后再次执行pip install wordcloud

再一次报错了,但是不要急,我们看看报错的详细信息,发现错误信息还是没有decode方法,也还是那个py文件,但是位置却发生了变化
这次报错的是272行而不再是192行了,这恰恰说明,刚才的修改是有效的.

按照修改192行的办法如法炮制272行的位置

然后再一次pip install wordcloud

成功安装Wordcloud模块~~~~~


https://static.52pojie.cn/static/image/hrline/4.gif
最后总结:
其实很多时候像我这样的新手在面对编程语言自身出现的一些问题时都是蛋疼的一批,
毕竟在心里面还是觉得自己很菜而像Python 这种大佬,大厂,大企业,做出来的产品习惯性默认是对的,总觉的是自己的问题,环境没配置对,语言没有安装好等等.但是大佬也是人,也会有犯错的时候,像这次这个很明显就是因为Python2到Python3过渡而造成的遗留问题,自己手动修改一下py文件就可以修复.
遇到问题时其实更应该去敢想敢做,虽然世界上没有后悔药,但是在计算机的世界里,你可以先把文件备份,给自己做一颗后悔药,然后放心大胆的去造作就可以了


谨以此文勉励所有的新手

jamescookers988 发表于 2022-6-26 23:35

Anekys 发表于 2021-8-17 17:27
原因就是pip调用的那个msvn.py里面的代码直接对字符串进行了decode操作,但是实际上Python3中字符串自身已 ...

Traceback (most recent call last):
File "d:\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
File "d:\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
File "D:\Python39\Scripts\pip3.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'
我现在报这个错误,头疼中,

Anekys 发表于 2021-8-17 17:27

sutramusic 发表于 2021-8-17 15:57
原因是什么呢?还没有太懂

原因就是pip调用的那个msvn.py里面的代码直接对字符串进行了decode操作,但是实际上Python3中字符串自身已经不带decode方法了但是字节码是可以进行decode的,所以先给他encode成字节码以后再decode就可以了

kicebeauty 发表于 2021-8-17 14:14

没人维护说明这个模块已经弃用,建议直接找新模块代替。;www

三滑稽甲苯 发表于 2021-8-17 14:30

思路不错,值得借鉴{:1_921:}

sutramusic 发表于 2021-8-17 15:57

原因是什么呢?还没有太懂

anguszhao 发表于 2021-8-17 16:02

我之前好像也遇到过类似的问题,感谢楼主:lol

huangjun0129 发表于 2021-8-17 16:34

大佬牛X,棒棒哒~~~~

lendone 发表于 2021-8-17 16:39

收藏一下,以后说不定会遇到:handshake

renpeng009 发表于 2021-8-17 16:51

我自己试了一下,直接安装成功,没有报错。python3.8

大白baymax 发表于 2021-8-17 17:08

生命苦短,我学python.

Anekys 发表于 2021-8-17 17:25

renpeng009 发表于 2021-8-17 16:51
我自己试了一下,直接安装成功,没有报错。python3.8

我是Python3.9 也可能是因为我的pip是重新安装的吧
之前有一次升级pip因为权限不足把旧的文件删掉后新的安装不上
然后手动安装的pip{:301_1008:}
页: [1] 2 3
查看完整版本: 记一次自行修复pip安装模块报错