2016-11-21 83 views
-1

我在Windows 10上使用python 2.7。012'iv'e试图使用“pip install openpyxl” 安装openpyxl,并且iv'e得到了一串错误,以“UnicodeDecodeError:'ascii'编解码器无法解码字节”结尾。 我搜索了这个网站的解决方案,我试图升级点,如其中之一所建议的。 当我输入“pip安装 - 升级点”我得到了同样的错误(我粘贴错误跟踪下面)。如何修复UnicodeDecodeError:'ascii'编解码器无法解码窗口上的字节

C:\Users\Gal>pip install --upgrade pip 
Exception: 
Traceback (most recent call last): 
    File "c:\python27\lib\site-packages\pip\basecommand.py", line 215, in main 
    status = self.run(options, args) 
    File "c:\python27\lib\site-packages\pip\commands\install.py", line 299, in  
run 
    requirement_set.prepare_files(finder) 
    File "c:\python27\lib\site-packages\pip\req\req_set.py", line 370, in 
prepare_files 
    ignore_dependencies=self.ignore_dependencies)) 
    File "c:\python27\lib\site-packages\pip\req\req_set.py", line 458, in  
_prepare_file 
    req_to_install, finder) 
    File "c:\python27\lib\site-packages\pip\req\req_set.py", line 407, in  
_check_skip_installed 
    finder.find_requirement(req_to_install, self.upgrade) 
    File "c:\python27\lib\site-packages\pip\index.py", line 442, in  
find_requirement 
    all_candidates = self.find_all_candidates(req.name) 
    File "c:\python27\lib\site-packages\pip\index.py", line 400, in  
find_all_candidates 
    for page in self._get_pages(url_locations, project_name): 
    File "c:\python27\lib\site-packages\pip\index.py", line 545, in _get_pages 
    page = self._get_page(location) 
    File "c:\python27\lib\site-packages\pip\index.py", line 648, in _get_page 
    return HTMLPage.get_page(link, session=self.session) 
    File "c:\python27\lib\site-packages\pip\index.py", line 757, in get_page 
    "Cache-Control": "max-age=600", 
    File "c:\python27\lib\site-packages\pip\_vendor\requests\sessions.py",  
line 487, in get 
    return self.request('GET', url, **kwargs) 
    File "c:\python27\lib\site-packages\pip\download.py", line 378, in request 
    return super(PipSession, self).request(method, url, *args, **kwargs) 
    File "c:\python27\lib\site-packages\pip\_vendor\requests\sessions.py",  
line 475, in request 
    resp = self.send(prep, **send_kwargs) 
    File "c:\python27\lib\site-packages\pip\_vendor\requests\sessions.py",  
line 617, in send 
    r.content 
    File "c:\python27\lib\site-packages\pip\_vendor\requests\models.py", line 
741, in content 
    self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or 
bytes() 
    File "c:\python27\lib\site-packages\pip\_vendor\requests\models.py", line 
664, in generate 
    for chunk in self.raw.stream(chunk_size, decode_content=True): 
    File "c:\python27\lib\site- 
packages\pip\_vendor\requests\packages\urllib3\response.py", line 353, in 
stream 
    data = self.read(amt=amt, decode_content=decode_content) 
    File "c:\python27\lib\site- 
packages\pip\_vendor\requests\packages\urllib3\response.py", line 310, in  
read 
    data = self._fp.read(amt) 
    File "c:\python27\lib\site-  
packages\pip\_vendor\cachecontrol\filewrapper.py", line 54, in read 
    self.__callback(self.__buf.getvalue()) 
    File "c:\python27\lib\site- 
packages\pip\_vendor\cachecontrol\controller.py", line 297, in 
cache_response 
    self.serializer.dumps(request, response, body=body), 
    File "c:\python27\lib\site-packages\pip\download.py", line 281, in set 
    return super(SafeFileCache, self).set(*args, **kwargs) 
    File "c:\python27\lib\site- 
packages\pip\_vendor\cachecontrol\caches\file_cache.py", line 99, in set 
    with self.lock_class(name) as lock: 
    File "c:\python27\lib\site- 
packages\pip\_vendor\lockfile\mkdirlockfile.py", line 19, in __init__ 
    LockBase.__init__(self, path, threaded, timeout) 
    File "c:\python27\lib\site-packages\pip\_vendor\lockfile\__init__.py", 
line 242, in __init__ 
    hash(self.path))) 
    File "c:\python27\lib\ntpath.py", line 85, in join 
    result_path = result_path + p_path 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xee in position 0: 
ordinal not in range(128) 

我该如何解决这个问题?

+0

尝试变通办法:'的easy_install --upgrade pip',看看它的工作原理 –

+0

它可能不适合该编码的问题有所帮助,但升级PIP需要你运行'python -m pip install --upgrade pip'。否则,你会遇到一个错误,试图删除pip.exe。 – eryksun

回答

0

我发现了这个问题。

我看到最后一个错误来自ntpath,试图使用ascii解码一个字节。 这意味着result_path或p_path是不以ascii编码的字符串。

当我打印它们的类型时,它显示result_path是unicode,p_path是一个字符串。当我打印p_path时,我认识到它是用latin1编码的。

所以我取代了线:

result_path = result_path + p_path

到行:

result_path = result_path +解码(p_path, 'LATIN1')

和解决它:D

0

我的答案(Gal Avineri的答案)几乎是正确的。 您应该转到ntpath文件并更改该行。

result_path = result_path + p_path 

的路线,

result_path = result_path + p_path.decode('latin1') 
相关问题