我在用pip安装一些第三方库时,总会报错,错误如下:
提示:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 inposition 34: ordinal
not in range(128)
ascii编码不能解码问题,查了好久,纠结了好久,终于找出问题所在了。。。。。。答案在下面!
>pip install sh
Downloading/unpacking sh
Cleaning up...
Exception:
Traceback (most recent call last):
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\basecomm
and.py", line 134, in main
status = self.run(options, args)
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\commands
\install.py", line 236, in run
requirement_set.prepare_files(finder,force_root_egg_info=self.bundle, bundl
e=self.bundle)
File "D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\req.py",
line 1092, in prepare_files
self.unpack_url(url, location,self.is_download)
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\req.py",
line 1238, in unpack_url
retval = unpack_http_url(link, location,self.download_cache, self.download_
dir)
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\download
.py", line 621, in unpack_http_url
temp_location = os.path.join(temp_dir,filename)
File "D:\developer\Python27\lib\ntpath.py",line 108, in join
path += "\\" + b
UnicodeDecodeError: 'ascii' codec can'tdecode byte 0xb1 in position 9: ordinal
not in range(128)
Traceback (most recent call last):
File"D:\developer\Python27\Scripts\pip-script.py", line 9, in
load_entry_point('pip==1.4.1','console_scripts', 'pip')()
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\__init__
.py", line 148, in main
return command.main(args[1:], options)
File"D:\developer\Python27\lib\site-packages\pip-1.4.1-py2.7.egg\pip\basecomm
and.py", line 169, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 inposition 34: ordinal
not in range(128)
原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码。
解决办法是:
python目录 Python27\Lib\site-packages 建一个文件sitecustomize.py
内容写:
import sys
sys.setdefaultencoding('gbk')
python会自动运行这个文件。