pipenv install error UnicodeDecodeError: 'utf8' codec can't decode byte 0xb4 in position

YunShell發表於2019-01-12

環境

  • win7
  • python 2.7.14 32bit

問題

在使用 pipenv 初始化安裝過程時,遇到編碼問題,錯誤如下

λ pipenv install
Creating a virtualenv for this project...
Pipfile: F:\Code\AuotSystraceAnalysis\Pipfile
Using c:\python27\python.exe (None) to create virtualenv...
Traceback (most recent call last):
  File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\pipenv.exe\__main__.py", line 9, in <module>
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "c:\python27\lib\site-packages\pipenv\vendor\click\decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "c:\python27\lib\site-packages\pipenv\cli\command.py", line 254, in install
    editable_packages=state.installstate.editables,
  File "c:\python27\lib\site-packages\pipenv\core.py", line 1741, in do_install
    pypi_mirror=pypi_mirror,
  File "c:\python27\lib\site-packages\pipenv\core.py", line 574, in ensure_project
    pypi_mirror=pypi_mirror,
  File "c:\python27\lib\site-packages\pipenv\core.py", line 506, in ensure_virtualenv
    python=python, site_packages=site_packages, pypi_mirror=pypi_mirror
  File "c:\python27\lib\site-packages\pipenv\core.py", line 929, in do_create_virtualenv
    combine_stderr=False, block=True, nospin=True, env=pip_config,
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py", line 285, in run
    _env = {fs_encode(k): fs_encode(v) for k, v in os.environ.items()}
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py", line 285, in <dictcomp>
    _env = {fs_encode(k): fs_encode(v) for k, v in os.environ.items()}
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py", line 397, in to_bytes
    return string.decode("utf-8").encode(encoding, errors)
  File "c:\python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb4 in position 671: invalid start byte

分析

從錯誤內容看,是編碼方式問題,不確定是否中文問題影響,錯誤內容在
c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py的397行,return string.decode("utf-8").encode(encoding, errors) 這句錯誤,也就是用 ‘utf-8’ 解碼方式報錯,這裡將其改為 “gbk” 嘗試 pass

  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py", line 397, in to_bytes
    return string.decode("utf-8").encode(encoding, errors)

解決方法

將 c:\python27\lib\site-packages\pipenv\vendor\vistir\misc.py 檔案397 的 ‘utf-8’ 改為 ‘gbk’ 方式,Ok

在這裡插入圖片描述

pass
在這裡插入圖片描述

相關文章