2016-11-21 97 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') 
相關問題