您的位置:首页 > 编程语言 > Python开发

解决Python使用pip安装时遇到的解码错误问题

2017-09-12 10:19 851 查看
我的OS是Windows,在使用python 3.6.2尝试安装pylint时,使用自动工具pip安装遇到了一个错误:

命令行:

>pip install pylint


运行错误(省略了其他正常输出):

Exception:
Traceback (most recent call last):
File "D:\Environment\Python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 43: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\Environment\Python36\lib\site-packages\pip\basecommand.py", line 215, in main
status = self.run(options, args)
File "D:\Environment\Python36\lib\site-packages\pip\commands\install.py", line 342, in run
prefix=options.prefix_path,
File "D:\Environment\Python36\lib\site-packages\pip\req\req_set.py", line 784, in install
**kwargs
File "D:\Environment\Python36\lib\site-packages\pip\req\req_install.py", line 878, in install
spinner=spinner,
File "D:\Environment\Python36\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
line = console_to_str(proc.stdout.readline())
File "D:\Environment\Python36\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 43: invalid start byte


这个问题其实很好解决,首先分析一下原因:

通常情况下,在windows里,pip 命令都是通过 cmd 或者 powershell 来调用运行,而一般中文的windows系统的 cmd 和 powershell 环境使用的编码格式默认为
GBK
,python 里面默认使用
utf-8
来解码,当然有可能遇到解码错误。

解决方法就是利用 Traceback 信息里,找到
$PYTHONROOT/lib/site-packages/pip/compat/__init__.py
文件,找到 75 行,
return s.decode('utf_8')
也就是引发异常的代码处, 把
"utf-8"
替换成
"gbk"
再运行就可以正常安装了。

如果不想每次遇到这个异常都进来改一次, 可以把这一行替换成一组
try...catch...
,如果 utf-8 解码失败,则自动调用 gbk 解码。

以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python windows exception
相关文章推荐