Pipenv使用出现编码错误UnicodeDecodeError: 'utf-8' codec can't decode ...

Pipenv使用出现编码错误UnicodeDecodeError: 'utf-8' codec can't decode ...

具体报错如下

Traceback (most recent call last):
File "c:\python37-32\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "c:\python37-32\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Python37-32\Scripts\pipenv.exe_main
.py", line 5, in
File "c:\python37-32\lib\site-packages\pipenv_init
.py", line 23, in
from .cli import cli
File "c:\python37-32\lib\site-packages\pipenv\cli_init_.py", line 3, in
from .command import cli
File "c:\python37-32\lib\site-packages\pipenv\cli\command.py", line 7, in
import crayons
File "c:\python37-32\lib\site-packages\pipenv\patched\crayons.py", line 49, in
is_powershell = "powershell" in shellingham.detect_shell()[0]
File "c:\python37-32\lib\site-packages\pipenv\vendor\shellingham_init_.py", line 22, in detect_shell
shell = get_shell(pid, max_depth=max_depth)
File "c:\python37-32\lib\site-packages\pipenv\vendor\shellingham\nt.py", line 100, in get_shell
processes = dict(_iter_process())
File "c:\python37-32\lib\site-packages\pipenv\vendor\shellingham\nt.py", line 78, in _iter_process
info = {'executable': str(pe.szExeFile.decode('utf-8'))}
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte

原因:

mark 进程名有中文, 这行代码 processes = dict(_iter_process())遍历了进程列表

解决方法:

法一.既然解决不了问题,那就解决制造问题的进程把,找到那个中文进程名的杀死。

法二.重启电脑就解决了。

还有的说法是:因为windows默认GBK编码,所以报错

最正确的解决方式不清楚,我的解决方式是修改源码,亲测有效:将你报错位置的(报错位置在你的错误信息里)str(pe.szExeFile.decode('utf-8') 改为 str(pe.szExeFile.decode('gbk')

posted @ 2019-07-07 10:19  南邮果粒橙  阅读(1560)  评论(0)    收藏  举报