しかも赤い文字でエラーまで出る始末。。
Traceback (most recent call last):
File "C:\traclight\python\Scripts\pip-script.py", line 8, in
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
File "C:\TracLight\python\lib\site-packages\pip-1.5.4-py2.6.egg\pip\__init__.p
y", line 185, in main
return command.main(cmd_args)
File "C:\TracLight\python\lib\site-packages\pip-1.5.4-py2.6.egg\pip\basecomman
d.py", line 161, in main
text = '\n'.join(complete_log)
File "C:\TracLight\python\Lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x82 in position 34: invalid
start byte
pythonを扱う上では文字コードは毎回の事エラーが出るし、そこまで驚かないけど、
英語圏の人は文字コード関係なしなんだろうなーと思ってしまう。
治す取っ掛かりは、エラーの出た個所を追っていくと文字データに2バイト文字が含まっている変数が見つかるので、 Windows環境であればCP932でdecodeしてあげれば良い。
そんなわけで探していくと、
download.py 472行目付近
temp_dirにアカウント名(2バイト文字)が入っていたので、さっそくdecodeデコード。
def unpack_http_url(link, location, download_cache, download_dir=None,
session=None):
if session is None:
session = PipSession()
temp_dir = tempfile.mkdtemp('-unpack', 'pip-')
try:
temp_dir = temp_dir.decode('cp932')
except:
pass
asciiやutf-8はそのままでいいし、eucは使わないし、
そんなやっつけ仕事で動く程度の修正して解決。
0 件のコメント:
コメントを投稿