2016-11-21 12 views
-1

Windows 10でPython 2.7を使用しています。 iv'eは「pip install openpyxl」を使用してopenpyxlをインストールしようとしました とiv'eが見つかりました"UnicodeDecodeError: 'ascii'コーデックでバイトをデコードできません"というエラーのトレース。 私はこのサイトで解決策を探しましたが、そのうちの1つに示唆されているように、私はpipをアップグレードしようとしました。 私が「pip install --upgrade 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

は回避策試してみてください:それは –

+0

それはこのエンコーディングの問題を助けることはできませんが、ピップをアップグレードする必要がありますが動作するかどうかを確認するために 'easy_installを--upgrade 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') 
関連する問題